“401 Unauthorized” erreur constante avec jquery appel à webmethod
J'ai eu du mal à trouver mon jquery appel à un webmethod de travail. Je suis d'être renvoyés par le serveur avec un "401 Unauthorized" réponse. Je dois avoir un paramètre incorrect dans le web.config ou quelque part d'autre qui serait de prévenir un appel réussi.
Votre perspicacité est apprécié!
Appel à la fonction js invoque le jquery appel
button.OnClickAction = "PageMethod('TestWithParams', ['a', 'value', 'b', 2], 'AjaxSucceeded', 'AjaxFailed'); return false;";
Fonction JavaScript qui rend le jquery appel
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'); }
});
}
Méthode Web dans la page
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();
}
...
Réponse comme on le voit dans la console de Firebug
json: {"Message":"Authentication failed.","StackTrace":null,"ExceptionType":"System.InvalidOperationException"}
et
"NetworkError: 401 Unauthorized - http://localhost/Care-Provider-Home/Profile/Personal-Profile.aspx/TestWithParams" TestWithParams
J'ai regardé et lu les sites habituels sur le sujet (Encosia, et al), mais pour en profiter. Soit il me manque une pièce essentielle, ou il y a quelques subtilités dans les paramètres de sécurité de mon environnement que le fait de prévenir un appel.
Voici quelques autres potentiellement utiles anecdotes qui peut avoir un impact sur votre diagnostic:
- Webmethods dans le code-behind
- En utilisant le CMS Sitecore (Ne semble pas intefere, ne sait jamais)
- IIS7
- .NET 3.5
- jQuery 1.3.2
J'attends vos idées et de direction--merci!
OriginalL'auteur CareMatch | 2010-02-19
Vous devez vous connecter pour publier un commentaire.
Oui, il a fait mettre au travail! Depuis le CMS Sitecore n'effectuer la réécriture d'URL pour générer des URLs (il assemble les pages de couches, de manière dynamique, semblable à la Page principale de concept), il m'est apparu qu'il peut être à l'origine de certains problème de l'origine de l'erreur 401. J'ai vérifié ce par la création d'un projet séparé avec un seul ASPX--et avec peu de travail, j'ai pu appeler les méthodes web et obtenir les valeurs à l'aide de jquery. Ensuite, j'ai créé presque identique ASPX dans ma racine du site web, mais il a dit Sitecore de l'ignorer quand une demande est faite (IgnoreUrlPrefixes dans le web.config), après un peu de travail, j'ai pu également le faire fonctionner avec succès! Merci pour votre aide.
Ajouté ScricptResource.axd à IgnoreUrlPrefixs dans le web.config.
Hey CareMatch - je suis en cours d'exécution dans le même problème, pourriez-vous fournir une liste de ce que vous avez fait pour arriver à ce travail, s'il vous plaît?
Les réponses un peu louche, mais il m'a envoyé dans la bonne direction.
OriginalL'auteur CareMatch
La réponse json à partir de la Console de Firebug fournit l'indice le plus révélateur de l'OMI. Le Système.InvalidOperationException (qui étrangement balades sur une réponse 401) suggère quelque chose de plus.
Tout d'abord, une recherche sur google sur "InvalidOperationException webmethod jquery" renvoie articles qui suggèrent la sérialisation des problèmes peuvent lever cette exception. À cette règle, modifier temporairement "des données: paramList" à "données: '{}'". En outre, attacher un débogueur et voir si l'exception se produit avant que la méthode exécute ou après qu'il remplit, et les tentatives pour arranger le résultat.
Si les étapes ci-dessus sont vides, vous pouvez essayer une réinitialisation d'un propre site web.config ou de lire davantage de résultats que de revenir de la "InvalidOperationException webmethod" recherche
OriginalL'auteur John Lewin
Ce formulaire d'authentification que vous utilisez, le cas échéant? La première chose qui vient à l'esprit est de s'assurer que votre application web dans IIS est configuré pour autoriser les utilisateurs anonymes (si vous avez en effet le désir de faire l'appel d'un utilisateur anonyme). Aussi votre mode d'Authentification dans le web.config n'est pas Windows par erreur. Si vous ne pouvez pas permettre aux utilisateurs anonymes et sont à l'aide de l'authentification par formulaires, puis l'utilisateur doit être connecté avant cet appel est effectué à partir de votre page.
Si le ci-dessus sont correctement définis, puis essayez de faire régulièrement appel au service de serveur pour vous assurer que le problème est uniforme quel que soit le point de l'invocation du service.
Afficher plus de paramètres si le problème n'est pas résolu. Espérons que cette aide.
OriginalL'auteur Punit Vora