ASP.NET Web API无法正常工作-500 Internal Server Error

时间:2019-05-22 15:10:41

标签: c# asp.net-web-api cors

我有一个ASP.NET Web API项目。我在所有浏览器中都收到500 Internal Server Error错误。

我安装了Microsoft.AspNet.WebApi.Cors -Version 5.2.7并将Web API配置文件中的配置设置为

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        var enableCorsAttribute = new EnableCorsAttribute("*", "*", "GET, PUT, POST, DELETE, OPTIONS");
        config.EnableCors(enableCorsAttribute);
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().First();
        jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
    }
}

何时我将调用URL /令牌登录以获取cors起源错误 我与邮递员测试并获得令牌 但是在浏览器中我得到了错误 console log error

我在chrome浏览器的“网络”标签中看到响应标头包含原始内容 enter image description here

我使用Chrome扩展程序向请求添加标头,但再次出现错误。我加了

[EnableCors(origins: "*", headers: "*", methods: "*")]

对所有控制器来说,但这还不行。

我从链接中使用过,但是我得到了错误的cors来源:

dzone cors origin learn cors origin in web api

// --------------------------------------------- ------- 经过大量的努力,我添加了

public class OptionsModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        context.BeginRequest += (sender, args) =>
        {
            var app = (HttpApplication)sender;

            if (app.Request.HttpMethod == "OPTIONS")
            {
                app.Response.StatusCode = 200;
                app.Response.AddHeader("Access-Control-Allow-Headers", "content-type,accept");
                app.Response.AddHeader("Access-Control-Allow-Origin", "*");
                app.Response.AddHeader("Access-Control-Allow-Credentials", "true");
                app.Response.AddHeader("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,PATCH,OPTIONS");
                app.Response.AddHeader("Content-Type", "application/json");
                app.Response.AddHeader("Accept", "application/json");
                app.Response.End();
            }
        };
    }

    public void Dispose()
    {
    }
}

和web.config

  <system.webServer>
<modules>
  <add name="HandleOptions" type="Satek.WebApi.New.Helper.OptionsModule" />
</modules>

现在我的网站在IE和Edge中打开 但在Chrome版本74.0.3729.157(官方内部版本)(64位)中 我收到错误

  

CORS策略已阻止从来源“ http://localhost:13052/token”访问“ http://localhost:4200”处的XMLHttpRequest:在飞行前响应中,Access-Control-Allow-Headers不允许请求标头字段授权。 / p>

和在网络标签Chrome中

Request URL: http://localhost:13052/token
     

请求方法:OPTIONS   状态码:200 OK   远程地址:127.0.0.1:8888   推荐人政策:降级时不推荐人   接受:application / json   访问控制允许凭据:true   访问控制允许标题:内容类型,接受   允许访问控制的方法:GET,PUT,POST,DELETE,PATCH,OPTIONS   访问控制允许来源:*   内容长度:0   内容类型:application / json   日期:2019年5月23日星期四06:30:17 GMT   服务器:Microsoft-IIS / 10.0   X-Powered-by:ASP.NET   X源文件:=?UTF-8?B?RTpcUmVwb3NpdG9yeVxTYXRlay5XZWJBcGkuTmV3XFNhdGVrLldlYkFwaS5OZXdcdG9rZW4 =?=   显示临时标题   访问控制请求标头:授权,内容类型   访问控制请求方法:POST   来源:http://localhost:4200   推荐人:http://localhost:4200/auth/login   用户代理:Mozilla / 5.0(Linux; Android 6.0; Nexus 5 Build / MRA58N)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 74.0.3729.157移动Safari / 537.36

error 1

error2

0 个答案:

没有答案