C# 如何在asp.net自托管API中启用CORS?

C# 如何在asp.net自托管API中启用CORS?,c#,asp.net,cors,self-host-webapi,C#,Asp.net,Cors,Self Host Webapi,我在asp.net中创建了一个自托管Web API。当我从POSTMAN调用它时,它运行良好,但当我从浏览器调用它时,它给出了以下错误 CORS策略已阻止从源“”访问“”处的XMLHttpRequest:否“Access-Control-A” 下面给出的是我的服务级别 using System.Web.Http; using System.Web.Http.SelfHost; namespace SFLSolidWorkAPI { public partial class SolidW

我在asp.net中创建了一个自托管Web API。当我从POSTMAN调用它时,它运行良好,但当我从浏览器调用它时,它给出了以下错误

CORS策略已阻止从源“”访问“”处的XMLHttpRequest:否“Access-Control-A”

下面给出的是我的服务级别

using System.Web.Http;
using System.Web.Http.SelfHost;

namespace SFLSolidWorkAPI
{
    public partial class SolidWorkService : ServiceBase
    {
        public SolidWorkService()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            var config = new HttpSelfHostConfiguration("http://localhost:8069");


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

            HttpSelfHostServer server = new HttpSelfHostServer(config);
            server.OpenAsync().Wait();
        }

        protected override void OnStop()
        {
        }
    }

}
这里,

经过这么多的研究,我找到了解决这个问题的办法。 您只需安装
Microsoft.AspNet.WebApi.Cors
并像
config.EnableCors一样使用它(新的EnableCorsAttribute(“*”,headers:“*”,methods:“*”)

希望它能帮助别人

谢谢

using System;
using System.ServiceProcess;
using System.Web.Http;
using System.Web.Http.Cors;
using System.Web.Http.SelfHost;

namespace SFLSolidWorkAPI
{
    public partial class DemoService : ServiceBase
    {
        public DemoService ()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            var config = new HttpSelfHostConfiguration("http://localhost:8069");


            config.Routes.MapHttpRoute(
               name: "API",
               routeTemplate: "{controller}/{action}/{id}",
               defaults: new { id = RouteParameter.Optional }
           );
            config.EnableCors(new EnableCorsAttribute("*", headers: "*", methods: "*"));

            HttpSelfHostServer server = new HttpSelfHostServer(config);
            server.OpenAsync().Wait();
        }

        protected override void OnStop()
        {
        }
    }

}

您是否尝试过使用Microsoft.AspNet.WebApi.Cors?Docs是的,我尝试了,但它对我不起作用,即使我尝试在控制器级别启用CRO,但它也不起作用。请使用wireshark或fiddler之类的嗅探器。将工作邮递员结果与非工作应用程序进行比较。修改应用程序,使http头与Postman相同。确保您的服务正在设置以下头,“访问控制允许源代码”、“*”访问控制允许头代码、“缓存控制、Pragma、源代码、授权、内容类型、X请求”和“访问控制允许方法”、“获取、放置、发布”添加
[启用码(源代码:*),标题:“*”,方法:“*”)
在控制器级别,但它仍然不工作。