![](/img/trans.png)
[英]ASP .NET Core IIS Deploy IIS AspNetCore Module Error: CLR worker thread exited prematurely
[英]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.