小编典典

使用jQuery AJAX“ 401(未经授权)”的ASP.NET调用WebMethod

c#

坚持了几个小时

{"Message":"Authentication failed.","StackTrace":null,"ExceptionType":"System.InvalidOperationException"}

我试图在我的ASP.Net Webform中调用此WebMethod

[WebMethod]
public static string GetClients(string searchTerm, int pageIndex)
{
    string query = "[GetClients_Pager]";
    SqlCommand cmd = new SqlCommand(query);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("@SearchTerm", searchTerm);
    cmd.Parameters.AddWithValue("@PageIndex", pageIndex);
    cmd.Parameters.AddWithValue("@PageSize", PageSize);
    cmd.Parameters.Add("@RecordCount", SqlDbType.Int, 4).Direction = ParameterDirection.Output;
    return GetData(cmd, pageIndex).GetXml();
}

从这个jquery.ajax

function GetClients(pageIndex) {
    $.ajax({
        type: "POST",
        url: "ConsultaPedidos.aspx/GetClients",
        data: '{searchTerm: "' + SearchTerm() + '", pageIndex: ' + pageIndex + '}',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: OnSuccess,
        failure: function (response) {
            alert(response.d);
            },
            error: function (response) {
                alert(response.d);
            }
    });
}

但是我总是会收到这个错误:

POST http://localhost:64365/ConsultaPedidos.aspx/GetClients 401(未经授权)

奇怪的是,在我开始对用户进行身份验证之前,这种方法一直有效

<system.web>
...
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="2880" defaultUrl="/Dashboard" />
    </authentication>
    <authorization>
      <deny users="?" />
    </authorization>
...
</system.web>

有任何想法吗?


阅读 367

收藏
2020-05-19

共1个答案

小编典典

问题解决了

这让我发疯。

〜/ App_Start / RouteConfig.cs内部 更改:

settings.AutoRedirectMode = RedirectMode.Permanent;

至:

settings.AutoRedirectMode = RedirectMode.Off;

(或只是注释行)

另外,如果启用了友善网址,则需要更改

url: "ConsultaPedidos.aspx/GetClients",

至:

url: '<%= ResolveUrl("ConsultaPedidos.aspx/GetClients") %>',

希望这对其他人有帮助

2020-05-19