Der Fehler "401 nicht autorisiert" wird konsistent mit dem jquery-Aufruf an webmethod ausgegeben

8

Ich habe gekämpft, um meinen Call zu einer Webmethode zu bringen, um zu arbeiten. Ich werde vom Server mit einer Antwort "401 nicht autorisiert" zurückgewiesen. Ich muss eine falsche Einstellung in der web.config oder an anderer Stelle haben, die einen erfolgreichen Anruf verhindern würde.

Ihre Einsicht ist willkommen!

Aufruf an js-Funktion ruft den jquery-Aufruf

auf %Vor%

JavaScript-Funktion, die den jquery-Aufruf

ausführt %Vor%

Webmethode auf Seite

%Vor%

Antwort wie in der Firebug-Konsole

%Vor%

und

%Vor%

Ich habe die üblichen Seiten zum Thema (Encosia, et al) angeschaut und gelesen, aber um zu nützen. Entweder fehlt mir ein kritischer Teil oder es gibt einige Feinheiten in den Sicherheitsparametern meiner Umgebung, die einen Anruf verhindern.

Hier sind einige andere nützliche Hinweise, die Ihre Diagnose beeinflussen können:

  • Webmethoden in Codebehind
  • Verwendung von Sitecore CMS (scheint nicht zu interssieren, niemals zu wissen)
  • IIS7
  • .NET 3.5
  • jQuery 1.3.2

Ich freue mich auf Ihre Einsichten und Richtung - Danke!

    
CareMatch 19.02.2010, 16:27
quelle

3 Antworten

6

Ja, es hat funktioniert! Da Sitecore CMS URL-Rewriting durchführt, um freundliche URLs zu erzeugen (es fügt die Seiten in Schichten zusammen, dynamisch, ähnlich dem Master-Page-Konzept), fiel mir auf, dass es möglicherweise den anfänglichen 401-Fehler verursachte. Ich habe dies verifiziert, indem ich ein separates Projekt mit einem einzigen ASPX erstellt habe - und mit etwas Arbeit konnte ich die Webmethoden aufrufen und Werte mit der jquery abrufen. Ich habe dann fast identische ASPX in meinem Web-Root erstellt, aber Sitecore gesagt, dass ich es ignorieren soll, wenn eine Anfrage an es gestellt wird (IgnoreUrlPrefixes in der web.config), nach einiger Arbeit konnte ich es auch erfolgreich arbeiten! Danke für deine Hilfe.

    
CareMatch 22.02.2010, 08:18
quelle
2

Die JSON-Antwort von der Firebug-Konsole liefert den wichtigsten Hinweis IMO. Die System.InvalidOperationException (die merkwürdig auf einer 401-Antwort beruht) deutet darauf hin, dass etwas mehr am Werk ist.

Erstens, googlen bei "InvalidOperationException webmethod jquery" gibt Artikel zurück, die vorschlagen, dass Serialisierungsprobleme diese Ausnahme auslösen können. Um dies auszuschließen, ändern Sie vorübergehend "data: paramList" in "data: '{}'". Fügen Sie außerdem einen Debugger hinzu und überprüfen Sie, ob die Ausnahme vor der Ausführung der Methode oder nach dem Abschluss auftritt und versucht, das Ergebnis zu serialisieren.

Wenn die oben genannten Schritte leer sind, sollten Sie versuchen, auf eine saubere web.config zurückzusetzen oder mehr Ergebnisse zu lesen, die von der "InvalidOperationException webmethod" -Suche zurückkommen

    
John Lewin 19.02.2010 18:37
quelle
0

Welche Form der Authentifizierung verwenden Sie, falls vorhanden? Das erste, was Ihnen in den Sinn kommt, ist sicherzustellen, dass Ihre WebApp in IIS anonyme Benutzer zulässt (wenn Sie tatsächlich den Anruf als anonymer Benutzer tätigen möchten). Außerdem ist der Authentifizierungsmodus in web.config nicht versehentlich auf Windows festgelegt. Wenn Sie anonyme Benutzer nicht zulassen können und Formularauthentifizierung verwenden, muss der Benutzer angemeldet sein, bevor dieser Aufruf von Ihrer Seite ausgeführt wird.

Wenn die obigen Einstellungen richtig vorgenommen wurden, versuchen Sie regelmäßig, den Dienst von der Serverseite aus anzurufen, um sicherzustellen, dass das Problem ungeachtet des Aufrufpunkts des Dienstes konsistent ist.

Veröffentlichen Sie weitere Einstellungen, wenn das Problem nicht behoben ist. Hoffe, das hilft.

    
desigeek 19.02.2010 17:42
quelle