Immer "401 Unauthorized" - Fehler konsequent mit jquery-Aufruf, um webmethod
Ich kämpfen um mein jquery Aufruf einer webmethode zu arbeiten. Ich werde prallte vom server mit einer Antwort "401 Unauthorized". Muss ich eine falsche Einstellung in der web.config oder sonst irgendwo, dass würde verhindern, dass sich ein erfolgreicher Aufruf.
Ihre Einsicht wird sehr geschätzt!
Aufruf der js Funktion die aufgerufen wird mit der jquery-Aufruf
button.OnClickAction = "PageMethod('TestWithParams', ['a', 'value', 'b', 2], 'AjaxSucceeded', 'AjaxFailed'); return false;";
JavaScript-Funktion, die macht der jquery-Aufruf
function PageMethod(fn, paramArray, successFn, errorFn) {
var pagePath = window.location.pathname;
var urlPath = pagePath + "/" + fn;
//Create list of parameters in the form:
//{"paramName1":"paramValue1","paramName2":"paramValue2"}
var paramList = '';
if (paramArray.length > 0) {
for (var i = 0; i < paramArray.length; i += 2) {
if (paramList.length > 0) paramList += ',';
paramList += '"' + paramArray[i] + '":"' + paramArray[i + 1] + '"';
}
}
paramList = '{' + paramList + '}';
//Call the page method
$.ajax({
type: "POST",
url: pagePath + "/" + fn,
contentType: "application/json; charset=utf-8",
data: paramList,
timeout: 10000,
dataType: "json",
success: function(result) { alert('Overjoyed'); },
error: function(result) { alert('No joy'); }
});
}
Web-Methode Seite
public partial class WebLayout : System.Web.UI.Page
{
[WebMethod()]
public static int TestNoParams()
{
return 1;
}
[WebMethod()]
public static string TestWithParams(string a, int b)
{
return a + b.ToString();
}
...
Antwort, wie gesehen, in der Firebug-Konsole
json: {"Message":"Authentication failed.","StackTrace":null,"ExceptionType":"System.InvalidOperationException"}
und
"NetworkError: 401 Unauthorized - http://localhost/Care-Provider-Home/Profile/Personal-Profile.aspx/TestWithParams" TestWithParams
Ich sah Sie an und Lesen der üblichen Seiten zum Thema (Encosia, et al), aber in Anspruch zu nehmen. Entweder fehlt mir eine entscheidende Rolle, oder es gibt einige Feinheiten in der Sicherheitsparameter von meinem Umfeld, dass die Verhinderung eines Anrufs.
Hier sind einige andere potenziell nützliche Informationen, die möglicherweise Auswirkungen auf Ihre Diagnose:
- Webmethods im codebehind
- Mit Sitecore CMS (scheint nicht intefere, nie wissen)
- IIS7
- .NET 3.5
- jQuery 1.3.2
Ich freue mich auf Ihre Erkenntnisse und-Richtung-danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, der hat es bekommen arbeiten! Da Sitecore CMS hat eine URL-rewriting-freundliche URLs zu generieren (es werden dort die Seiten in Schichten, dynamisch, ähnlich Master-Page-Konzept), fiel mir ein, dass es möglicherweise verursachen einige Probleme, die zunächst verursacht die Fehler 401. Ich habe überprüft dies durch das erstellen eines separaten Projekts mit einem einzigen ASPX--und mit der Arbeit, ich war in der Lage, rufen Sie die web-Methoden und bekommen Werte mit Hilfe der jquery. Dann habe ich fast identisch ASPX in meinem web-root, aber sagte Sitecore, es zu ignorieren, wenn eine Anfrage gemacht wird, um es (IgnoreUrlPrefixes im web.config), nach der Arbeit, die ich konnte auch Sie erfolgreich arbeiten! Vielen Dank für Ihre Hilfe.
Die json-Antwort aus der Firebug-Konsole bietet die aussagekräftigste Anhaltspunkt IMO. Das System.InvalidOperationException (die seltsamerweise fährt auf eine 401-Antwort) schlägt vor, etwas mehr ist bei der Arbeit.
Zuerst googeln auf "InvalidOperationException webmethod von jquery" gibt-Artikel, die nahelegen Serialisierung Probleme werfen kann diese Ausnahme. Um dies auszuschließen, ändern Sie vorübergehend "Daten: paramList" zu "data: '{}'". Zusätzlich einen debugger Anhängen und sehen, ob die Ausnahme geschieht, bevor die Methode ausgeführt wird oder nachdem er abgeschlossen ist, und versucht zu serialisieren Sie das Ergebnis.
Wenn die oben genannten Schritte gehen leer aus, Sie möchten möglicherweise versuchen Sie es zurücksetzen, um ein sauberes Netz.config oder Lesen Sie mehr über die Ergebnisse, die kommen zurück von der "InvalidOperationException " webmethod" Suche
Welche form der Authentifizierung, die Sie verwenden, wenn überhaupt? Die erste Sache, die kommt sich zu kümmern, ist, um sicherzustellen, dass Sie Ihre webApp in IIS festgelegt ist, um den anonymen Benutzer (falls Sie wirklich Lust, um den Anruf als anonymer Benutzer). Auch, dass der Authentifizierungs-Modus in web.config ist nicht auf Windows durch Fehler. Wenn Sie können nicht zulassen, dass anonyme Benutzer und die Formularauthentifizierung verwenden, dann muss der Benutzer angemeldet sein, bevor dieser Anruf von deiner Seite aus.
Wenn die oben genannten korrekt eingestellt sind, dann versuchen Sie, einen regelmäßigen Anruf zu dem service von server-Seite, um sicherzustellen, dass das problem konsistent ist, unabhängig von dem Zeitpunkt der Anrufung der service.
Post mehr Einstellungen, wenn das problem nicht behoben. Hoffe, das hilft.