ASP.NET 使用 jQuery AJAX“401(未经授权)"调用 WebMethod [英] ASP.NET Calling WebMethod with jQuery AJAX "401 (Unauthorized)"

查看:40
本文介绍了ASP.NET 使用 jQuery AJAX“401(未经授权)"调用 WebMethod的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

坚持了几个小时

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

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

I'm trying to call this WebMethod in my ASP.Net Webform

[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

From this 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);
            }
    });
}

但我总是收到这个错误:

But I always get this error:

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

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

Weird thing is that this used to work until I start authenticating users

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

有什么想法吗?

推荐答案

问题解决

这让我发疯了.

~/App_Start/RouteConfig.cs 内部变化:

settings.AutoRedirectMode = RedirectMode.Permanent;

致:

settings.AutoRedirectMode = RedirectMode.Off;

(或者只是注释该行)

此外,如果启用了友好 URL,您需要更改

Also if friendly URLs are enabled you need to change

url: "ConsultaPedidos.aspx/GetClients",

致:

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

希望这对其他人有帮助

这篇关于ASP.NET 使用 jQuery AJAX“401(未经授权)"调用 WebMethod的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆