如何在IIS上托管.net Core 3.0 Web Api?

时间:2019-11-13 09:22:03

标签: .net asp.net-core iis .net-core-3.0 core-api

我试图通过将其托管在IIS上,在Remote PC上运行.net核心Web Api。我可以在本地运行应用程序。通过PostMan运行Api可以正常工作。

我也可以通过

使用IP地址运行应用程序
UseUrls("http://localhost:5000", "http://localhost:21868","http://*.*.*.*:5000")
program.cs中的

(使用kestral的自托管应用程序)。 在 applicationhost.config

中完成设置
<binding protocol="http" bindingInformation="*:21268:localhost" />

我试图通过在IIS上托管API来在远程PC上运行而不调试,但是我无法做到这一点?

编辑:

尝试托管时出现错误-

  
    

无法连接到Web服务器iisexpress and无效的URl:无法解析主机名。

  

2 个答案:

答案 0 :(得分:0)

缺少的是-在设置Visual Studio 2017/2019时启用开发时间IIS支持,因为在 IIS 。

此后,我可以在“项目属性”的IIS中设置启动。在链接下方,我发现对在IIS上托管核心应用程序很有帮助。

  
    

https://devblogs.microsoft.com/aspnet/development-time-iis-support-for-asp-net-core-applications/

  

答案 1 :(得分:0)

编辑您的 Startup.cs 文件

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{

    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    if (env.IsProduction() || env.IsStaging())
    {
        app.UseExceptionHandler("/Error/index.html");
    }

    // Enable middleware to serve generated Swagger as a JSON endpoint.
    app.UseSwagger(c =>
    {
        c.RouteTemplate = "swagger/{documentName}/swagger.json";
    });

    // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),
    // specifying the Swagger JSON endpoint.
    app.UseSwaggerUI(c =>
    {
        c.RoutePrefix = "swagger";
        c.SwaggerEndpoint("/swagger/v1/swagger.json", "API v1");

        // custom CSS
        c.InjectStylesheet("/swagger-ui/custom.css");
    });

    app.Use(async (ctx, next) =>
    {
        await next();
        if (ctx.Response.StatusCode == 204)
        {
            ctx.Response.ContentLength = 0;
        }
    });


    app.UseHttpsRedirection();

    app.UseRouting();

    app.UseAuthorization();
    app.UseAuthentication();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });

    app.UseCors();

}   

https://youtu.be/6HiaXCAlRr0