2010-07-05 151 views
3

生病用asp.net許可瘋狂... 這個時候,我只是不能AJAX-CALL任何種類的WebMethod,或者我只是得到:ASP.NET WEBMETHOD總是返回401

{"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(); 
        } 
       } 
     }); 

上有一些錯誤我知道成功的東西。這不是現在的問題。 Firebug控制檯總是返回401未授權當我嘗試ajax調用。

有人嗎?

+1

你是如何做的電話嗎? – 2010-07-05 23:26:56

+0

編輯了主帖。 – ale 2010-07-05 23:31:23

+0

你在web配置中設置了什麼認證? – redsquare 2010-07-05 23:32:35

回答

10
  1. WEBMETHOD應該共享(VB)/靜態(C#),如果你得到錯誤500,紀念你的方法共享/靜態和你做。

  2. 有關錯誤401:如果您使用窗體身份驗證記得要允許您的登錄頁面匿名訪問,通過在你的web.config這樣做:

    <location path="Login.aspx"> 
        <system.web> 
        <authorization> 
         <allow users="*"/> 
        </authorization> 
        </system.web> 
    </location>