当前位置: 首页 > 面试题库 >

使用AspNet.FriendlyUrls和AspNet.Identity从jquery.ajx调用网络方法期间身份验证失败

楚建柏
2023-03-14
问题内容

如果我从装有已安装的Nuget包Microsoft.AspNet.FriendlyUrls v
1.0.2和Microsoft.AspNet.Identity
v.1.0.0。的jQuery.Ajax调用webmethod,那么我将获得数据对象,但没有data.d但具有Message属性“身份验证失败”。

我的Webmethod.aspx是:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
     <title>WebMethod</title>
    <script src="Scripts/jquery-2.0.3.js"></script>
</head>
<body>
    <form id="form1" runat="server">
    <h3>Test Webmethod</h3>
    <div id="greeitng"></div>
    <div id="innerError" style="border:1px dotted red;display:none;" title="errorMessage"></div>
    <script type="text/javascript">
        function asyncServerCall(username) {
            jQuery.ajax({
                url: 'WebMethod.aspx/HelloWorld',
                type: "POST",
                data: "{'username':'" + username + "'}",
                //async: false,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    if (data.d == undefined)
                        document.getElementById("greeitng").innerHTML = data.Message;
                    else
                        document.getElementById("greeitng").innerHTML = data.d;
                },
                error: function (err) {
                    if (err.responseText) {
                        $('#innerError').html(err.responseText).show();
                    }
                    else {
                        alert(err);
                    }
                }
            });
        }
        $(document).ready(function () {
            $('#innerError').hide();
            asyncServerCall("Superuser");
        });
    </script>
    </form>
</body>
</html>

我在WebMethod.aspx.cs中的Webmethod是:

[System.Web.Services.WebMethod]
public static string HelloWorld(string username)
{
    return string.Format("Hello, {0}", username);
}

在Global.asax.cs中激活了路由

void Application_Start(object sender, EventArgs e)
{
    RouteConfig.RegisterRoutes(RouteTable.Routes);
}

在App_Start中已重新路由

public static class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        var settings = new FriendlyUrlSettings();
        settings.AutoRedirectMode = RedirectMode.Permanent;
        routes.EnableFriendlyUrls(settings);
    }
}

问题答案:

在您的App_Start文件夹中,在RouteConfig中…。

注释掉以下行或更改其RedirectMode:

//settings.AutoRedirectMode = RedirectMode.Permanent;


 类似资料:
  • 我试图按照API密钥身份验证代码从这个答案:https://stackoverflow.com/a/48448901 我创建了我的过滤器类: 然后我实现了我的安全配置: 当我用头作为请求的一部分对应用程序进行外部调用时,我得到一个403禁止响应。我可以看到过滤器从头中拉出键。这部分正在工作。 但是,不会调用authenticate()方法来检查头是否有效。我不确定我错过了什么,代码在我看来是一样的

  • 我有一个API在Apache堆栈上运行,使用Java。我继承了一个遗留代码库,需要找到这个错误来自哪里显然是上一个开发人员构建了一个不能工作的特性,这就是错误所在,但没有更多信息。它使用Drupal webservice模块,发送调用的代码如下所示 我可以从哪里开始寻找这个错误,或者它可能意味着什么,你有什么想法吗? 完整的堆栈跟踪如下所示::: 用户失败:null。java.lang.Unsup

  • 我想构建一个API路由,经过身份验证的用户和未经身份验证的用户都可以调用该路由,并根据用户是否经过身份验证返回数据。 我卡在使用身份验证::检查()。 控制器的功能是这样的: 我最后有两个场景: 情景1 在这种情况下,在控制器中,当我检查Auth::check()在if条件内时,无论用户是否经过身份验证,我总是得到错误条件。 方案 2 在这种情况下,在控制器中,当我检查Auth::check()时

  • 背景 我想实现本文中提出的设计。 客户端首先使用IDP(OpenID Connect/oauth2)进行身份验证 IDP返回一个访问令牌(不透明的令牌,没有用户信息) 客户端使用授权头中的访问令牌通过API网关进行调用 API网关使用访问令牌向IDP发出请求 IDP验证访问令牌是否有效,并以JSON格式返回用户信息 API网关将用户信息存储在JWT中,并使用私钥对其进行签名。然后将JWT传递给下游

  • Tweepy API请求twitter return me Twitter错误响应:状态代码=401。 这是我的实际代码: 我曾试图用tweepy软件包删除推文,并获得了所有必需的密钥。镊子包装不起作用吗?有人能帮我解决这个问题吗。

  • 我正在用java编写一个必须在我的工作环境中运行的程序。这是我的代码片段: 在我的家庭网络上,这工作得非常好,但在商业网络上,我会遇到以下错误: onnection.getSocketException:软件导致连接中止:recv在java.net.SocketInputSonquerer.runRead0(本机方法)在onquerer.java:44SocketInputStream.read(