厌倦了asp.net权限疯狂...... 这一次,我只是无法通过AJAX-CALL任何一种web方法或者我得到:
{"Message":"Authentication failed.","StackTrace":null,"ExceptionType":"System.InvalidOperationException"}
代码:
<WebMethod(True)> _
Public Function Login(ByVal usuario As String, ByVal senha As String) As Boolean
[lots of validations]
If (con.Connection.State = ConnectionState.Open) Then
Return True
Else
Return False
End If
End Function
JQUERY CALL:
$("#btnEnviar").click(function() {
$('#login').hide();
$('#ajaxLoader').fadeIn();
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Login.aspx/Login",
data: "{'usuario':'" + $('#txtUsuario').val() + "','senha':'" + $('#txtSenha').val() + "'}",
dataType: "json",
dataFilter: function(data) {
var msg = eval('(' + data + ')');
if (msg.hasOwnProperty('d'))
return msg.d;
else
return msg;
},
success: function(msg) {
if (msg.UsuarioValido == '1') {
top.location = "Home.aspx"
}
else {
$('#ajaxLoader').hide();
$('#login').fadeIn();
}
}
});
在我知道的成功事件上有一些错误。这不是现在的问题。 当我尝试ajax呼叫时,Firebug控制台总是返回401 Unauthorized。
任何?
答案 0 :(得分:10)
Webmethod如果你收到ERROR 500,应该共享(vb)/ static(C#),将你的方法标记为共享/静态,你就完成了。
关于错误401:如果您正在使用表单身份验证,请记住允许匿名访问您的登录页面,方法是在您的web.config上执行此操作:
<location path="Login.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
答案 1 :(得分:0)
这些步骤为我解决了这个问题。
1)在web.config中添加以下代码
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
2)在〜/ App_Start / RouteConfig.cs中,进行如下更改
发件人:设置。AutoRedirectMode= RedirectMode.Permanent;
收件人:设置。AutoRedirectMode= RedirectMode.Off;
3)在ajax调用中,使用resolveurl方法, 发件人:'userForm.aspx / getAllUsers'
收件人:'<%= ResolveUrl(“ userForm.aspx / getAllUsers”)%>'
这样最终的jQuery代码如下所示:
$.ajax({
url: '<%= ResolveUrl("userForm.aspx/getAllUsers") %>',
async: false,
contentType: 'application/json; charset=utf-8',
success: function (data) {
source.localdata = data.d;
},
error: function (err) {
alert('Error: ' + err);
}
})
请参考以下链接以获取更多信息。 https://forums.asp.net/t/1975897.aspx?jquery+ajax+calls+to+asp+net+web+methods+authentication+error+