繁体   English   中英

将WebAPI(aspnetcore 2)部署到IIS

[英]Deploy WebAPI (aspnetcore 2) to IIS

希望有人能发现我做错了什么。 我有一个包含MVC DLL和WebAPI DLL的解决方案(VS2017&.Net Core 2)。 这些可以在IISExpress上在本地正常工作,并且我可以(通过多个启动项目)启动这两者,并使它们彼此通信(localhost:5000和localhost:7902)。

我已经准备好部署到DEV服务器(我们的开发登台服务器),并在VSTS上创建了构建步骤。 构建进展顺利,然后创建了部署定义(同样在VSTS上)。 MVC应用程序运行良好(使用带有主机名的https绑定)。 但是,这就是问题所在,WebAPI也已成功部署,但IIS无法启动它。 我可以使用CLI(dotnet Jbssa.MasterData.Api.DLL)在服务器上本地运行它,并且运行良好。 但是,使用https绑定甚至都不会尝试启动服务器。

我已经检查了webconfig,它看起来正确(与MVC版本相比)。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\Jbssa.MasterData.Api.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

两个站点(https,443,主机名和证书)的绑定配置完全相同,但期望主机名masterdataapi-dev.jbssa.com.au与masterdataapi.jbssa.com.au(这些是内部应用程序,不会公开)我们使用Swagger / Swashbuckle来记录API,此页面仅返回404。

我什至不知道从哪里开始寻找内容或您需要帮助的其他信息。 好像IIS甚至无法识别API站点,也不会在web.config中运行处理程序。 我需要API本身就是一个完整的网站,因为许多客户端(网络客户端和胖客户端)都将访问它。 一旦我们弄清为什么它不会启动,它将成为众多应用之一。

我将Serilog日志添加到,它通常输出“启动主机”作为第一条语句,但未显示,实际上没有创建日志文件。

 public static int Main(string[] args)
        {
            Log.Logger = new LoggerConfiguration()
                .ReadFrom.Configuration(Configuration)
                .Enrich.FromLogContext()
                .WriteTo.Console()
                .CreateLogger();

            try
            {
                Log.Information("Starting host");

                var host = BuildWebHost(args);

                host.Run();
                return 0;
            }
            catch(Exception ex)
            {
                Log.Fatal(ex, "Host terminated unexpectedly");
                return 1;
            }
            finally
            {
                Log.CloseAndFlush();
            }
        }

通过IIS Express或CLI运行时,将创建日志文件。

编辑:请注意,其他1.1和2.0核心站点都可以在服务器上正常运行,这是我们部署的第一个API,因此没有“主页”登录页面或wwwroot文件夹。 不知道这是否与它有关。 编辑:对不起,不是404。这是结果的图像。 看不到响应代码: 回应图片

原来,此问题是服务器上缺少CNAME条目。 添加后,API开始按设计工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM