Obtendo o erro "401 não autorizado" de forma consistente com a chamada jquery ao webmethod
Eu tenho lutado para obter minha chamada de jquery para um método da web para funcionar. Estou sendo devolvido pelo servidor com uma resposta "401 não autorizado". Eu devo ter uma configuração incorreta no web.config ou em outro lugar que possa impedir uma chamada bem-sucedida.
Sua percepção é apreciada!
A função call to js chama a chamada jquerybutton.OnClickAction = "PageMethod('TestWithParams', ['a', 'value', 'b', 2], 'AjaxSucceeded', 'AjaxFailed'); return false;";
Função JavaScript que faz a chamada jqueryfunction 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étodo da Web na página 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();
}
...
Resposta como vista no console do Firebugjson: {"Message":"Authentication failed.","StackTrace":null,"ExceptionType":"System.InvalidOperationException"}
e
"NetworkError: 401 Unauthorized - http://localhost/Care-Provider-Home/Profile/Personal-Profile.aspx/TestWithParams" TestWithParams
Eu olhei e li os sites habituais sobre o assunto (Encosia, et al), mas para aproveitar. Estou com falta de uma parte crítica ou há algumas sutilezas nos parâmetros de segurança do meu ambiente que impedem uma chamada.
Aqui estão alguns outros petiscos potencialmente úteis que podem afetar seu diagnóstico:
Métodos da Web em codebehindUsando Sitecore CMS (parece não interferir, nunca se sabe)IIS7.NET 3.5jQuery 1.3.2Aguardo suas idéias e orientações - obrigado!