尽管启用了cors Asp.NET WebAPI,但无法访问swagger

尽管启用了cors Asp.NET WebAPI,但无法访问swagger,.net,asp.net-web-api,cors,swagger,.net,Asp.net Web Api,Cors,Swagger,我有一个WebAPI-.NETFramework 4.6.2 我在通过swagger访问webapi时遇到以下错误: 无法从服务器读取。它可能没有适当的 访问控制源设置 我的代码中已经有CORS 我不知道发生了什么事 WebAPIConfig.cs public static class WebApiConfig { public static void Register(HttpConfiguration config) { conf

我有一个WebAPI-.NETFramework 4.6.2 我在通过swagger访问webapi时遇到以下错误:

无法从服务器读取。它可能没有适当的 访问控制源设置

我的代码中已经有CORS 我不知道发生了什么事

WebAPIConfig.cs

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {               
       config.EnableCors();
    }
}
GlobalAsax.cs

protected void Application_Start()
{
  RouteTable.Routes.MapOwinPath("swagger", app =>
  {
    app.UseSwaggerUi(typeof(WebApiApplication).Assembly, new SwaggerUiSettings
    {
      MiddlewareBasePath = "/swagger",
      ShowRequestHeaders = true,
      DefaultUrlTemplate = "{version}/{controller}/{action}/{id}",
      AddMissingPathParameters = true,
      Version = "v1"
    });
  });
  IModule module = TfmsModule.GetModule(typeof(MyBCModule), "My");
  module.StartModule();
  Tracer.Info("MyAPI.Application_Start: MyBCModule(\"MyAPI\").StartModule()");
  GlobalConfiguration.Configure(WebApiConfig.Register);
}
我在控制器的开头添加了以下行

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

我能得到一些帮助吗?

我想你正在使用Swashback。如果不是这样的话,我会删除帖子

错误:

无法从服务器读取。它可能没有适当的 访问控制源设置

如果根URL与传入请求的根URL不匹配,则在请求招摇过市UI时引发。根URL用于通过UI页面获取Swagger文档,因此如果根URL和Swagger UI请求的URL不同,则会出现CORS错误。根据虚张声势的注释:

默认情况下,服务根url是从用于 访问文档。但是,可能存在以下情况(例如代理和 负载平衡环境)中,此问题无法正确解决。你 您可以通过提供自己的代码来确定根目录来解决此问题 网址

因此,在某些情况下,您可能通过代理进入,但根URL设置不正确。通过查看swagger页面源并查找以下行,可以查看正在解析的根URL:

window.swashbuckleConfig = {
    rootUrl: '<THE_RESOLVED_ROOT_URL>', ...

…其中
GetRootUrlFromAppConfig
是一个返回根URL字符串的方法。

浏览器开发工具控制台选项卡上的错误消息是什么?无法加载SwaggerUI无法从服务器读取。它可能没有适当的访问控制源设置。--调试时的消息function@Helen他是否在使用虚张声势的皮带扣?
c.RootUrl(req => GetRootUrlFromAppConfig());