发送Ajax POST时获取401 Unauthorized

时间:2018-05-31 04:51:11

标签: c# asp.net ajax web-services unauthorized

我一直在Visual Studio 2015~2017中测试非常简单的带有帖子类型的Ajax代码 不幸的是,我总是从浏览器中输出错误信息,如下图所示 enter image description here

请帮助我认识到这个问题有什么问题,谢谢

PS:
客户端

<script src="Scripts/jquery-1.10.2.min.js"></script>
<script>    
    $.ajax({
        type: "POST",
        url: "WebForm1.aspx/Delete",
        data: {},
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {    
            alert("=="+ data.d)
        },
        failure: function (response) {
            alert(response.d);
        }    
    });
</script>

服务器端:

 public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
        [System.Web.Services.WebMethod]
        public static string Delete()
        {
            return "12334";
        }
    }

web.config

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
    <pages>
      <namespaces>
        <add namespace="System.Web.Optimization" />
      </namespaces>
      <controls>
        <add assembly="Microsoft.AspNet.Web.Optimization.WebForms" namespace="Microsoft.AspNet.Web.Optimization.WebForms" tagPrefix="webopt" />
      </controls>
    </pages>
  </system.web>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" culture="neutral" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
      </dependentAssembly>      
    </assemblyBinding>
  </runtime>
  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
    </compilers>
  </system.codedom>
</configuration>

顺便说一下,我也在Stack Overflow上发现了同样的问题,但它对我来说也不起作用。

以下图片为完整步骤
第一步:
enter image description here 第二步:
enter image description here 第3步:添加webform.aspx enter image description here Step3:把代码放入,我不知道为什么或者有什么问题其实用ajax连接到服务器是非常容易的代码,请帮我多多谢谢

1 个答案:

答案 0 :(得分:1)

试试吧,它会处理你的问题 第1步:在App_Start文件夹中添加RouteConfig.cs

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

第2步:添加Global.asax.cs

Application_Start(object sender, EventArgs e)
{
    // Code that runs on application startup
    RouteConfig.RegisterRoutes(RouteTable.Routes);
}