使用Visual Studio Code将ASP.net core 2.1 WEB API部署到IIS

时间:2018-07-30 14:19:06

标签: asp.net-web-api asp.net-core asp.net-core-webapi

正在研究ASP.net核心2.1 Web API项目。我需要启用API,以便我们也正在开发的客户端应用程序可以访问该API。

到目前为止,我发现发布到IIS的唯一方法是执行手动过程:

  • 运行dotnet publish -c版本
  • 将bin \ Release \ netcoreapp2.1 \ publish \中的文件复制到我的IIS Web App文件夹中

我想知道是否还有更直接的方法可以做到这一点。

构建此发行版还需要花费一些时间,因此对于开发环境而言,这是一个非常缓慢的过程。问题是,在集成测试服务器上与F5一起运行时,我们不能允许外部访问WEB api。我们如何启用更敏捷的测试环境?

另一个问题是,当从JavaScript应用程序调用例如fetch('MyAPIServer / api / MyItems')时,出现了CORS错误:

Failed to load http://localhost:86/api/shit: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8082' is therefore not allowed access. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled

在开发此类应用程序时,是否绝对需要启用CORS?

如果我这样获取:

fetch(
    `http://localhost:86/api/shit`,{mode: 'no-cors'}
  )

我得到:

Uncaught (in promise) SyntaxError: Unexpected end of input
at eval (Pos.vue?7f37:68)

1 个答案:

答案 0 :(得分:0)

就CORs问题而言,您可以将以下内容添加到启动中:

public void ConfigureServices(IServiceCollection services)
{
    // Rest of config stuff ...
    services.AddCors();
}

然后,您还需要添加以下内容。

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            app.UseCors(builder =>
            {
                builder.WithOrigins("http://localhost:8080",
                                    "http://localhost:8081", 
                                    "http://localhost:8082")   
                       .AllowAnyMethod()
                       .AllowAnyHeader()
                       .AllowCredentials();
                });
                app.UseMvc();
            }