ASP.net 核心 WebAPI 不在 IIS 后面启动
ASP.net Core WebAPI not starting behind IIS
我正在尝试托管 ASP.net 核心 WebAPI,就像 Microsoft 文档告诉我的那样:Hosting in ASP.NET Core
配置
我是 运行 Windows Server 2016 上的 IIS 10,其中安装了 Web Deploy 3.6、.Net Core Runtime 2.0.7 和 .NET Core Server Hosting Bundle。
WebAPI配置如下:
Program.cs :
public static IWebHost BuildWebHost(string[] args) {
IConfigurationRoot config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
return WebHost.CreateDefaultBuilder(args)
.UseConfiguration(config)
.UseStartup<Startup>()
.UseKestrel(opt => {
opt.Listen(IPAddress.Loopback, 4000);
})
.UseIISIntegration()
.Build();
}
web.config :
<?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=".\Agent.DuZu.Web.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
</system.webServer>
在 IIS 上,ASP.net 核心模块已激活,我有一个绑定到端口 80 的站点。
问题
我正在使用 WebDeploy 在服务器上发布应用程序,但应用程序无法启动。没有输出也没有错误。我不确定我是否遗漏了什么或者我的配置是否只是失败了。
另外我想知道,是否有办法查看 运行 App.
在我同事的帮助下,我找到了解决方案:
权限:
IIS 必须对站点文件夹具有权限。必须检查 applicationpool 用户是否具有文件夹权限。
我已经在我所有站点所属的“C:\inetpub\sites”文件夹以及我正在使用的应用程序池上授予“本地服务”。
web.config
WebDeploy 已覆盖 web.config 并将其更改为:
<aspNetCore processPath=".\Agent.DuZu.Web.exe"
arguments=".\Agent.DuZu.Web.dll"
stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout"
forwardWindowsAuthToken="false" />
所以 stdout 日志显示了参数错误。
解决方案是将 processPath 更改为“dotnet”,如 .
中所述
<aspNetCore processPath="dotnet"
arguments=".\Agent.DuZu.Web.dll"
stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout"
forwardWindowsAuthToken="false" />
另一件需要提及的事情是,必须创建“日志”文件夹,因为 IIS 不会自行执行此操作。
我在一个新项目中也发生了这种情况,其中模块被指定为 AspNetCoreModuleV2:
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
估计是我没有安装。我在我的一个较旧的 .NET Core 网站上看到,该模块不是 V2。从模块规范中删除 V2 在我的实例中修复了它:
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
我正在尝试托管 ASP.net 核心 WebAPI,就像 Microsoft 文档告诉我的那样:Hosting in ASP.NET Core
配置
我是 运行 Windows Server 2016 上的 IIS 10,其中安装了 Web Deploy 3.6、.Net Core Runtime 2.0.7 和 .NET Core Server Hosting Bundle。
WebAPI配置如下:
Program.cs :
public static IWebHost BuildWebHost(string[] args) {
IConfigurationRoot config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
return WebHost.CreateDefaultBuilder(args)
.UseConfiguration(config)
.UseStartup<Startup>()
.UseKestrel(opt => {
opt.Listen(IPAddress.Loopback, 4000);
})
.UseIISIntegration()
.Build();
}
web.config :
<?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=".\Agent.DuZu.Web.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
</system.webServer>
在 IIS 上,ASP.net 核心模块已激活,我有一个绑定到端口 80 的站点。
问题
我正在使用 WebDeploy 在服务器上发布应用程序,但应用程序无法启动。没有输出也没有错误。我不确定我是否遗漏了什么或者我的配置是否只是失败了。 另外我想知道,是否有办法查看 运行 App.
在我同事的帮助下,我找到了解决方案:
权限:
IIS 必须对站点文件夹具有权限。必须检查 applicationpool 用户是否具有文件夹权限。
我已经在我所有站点所属的“C:\inetpub\sites”文件夹以及我正在使用的应用程序池上授予“本地服务”。
web.config
WebDeploy 已覆盖 web.config 并将其更改为:
<aspNetCore processPath=".\Agent.DuZu.Web.exe"
arguments=".\Agent.DuZu.Web.dll"
stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout"
forwardWindowsAuthToken="false" />
所以 stdout 日志显示了参数错误。
解决方案是将 processPath 更改为“dotnet”,如
<aspNetCore processPath="dotnet"
arguments=".\Agent.DuZu.Web.dll"
stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout"
forwardWindowsAuthToken="false" />
另一件需要提及的事情是,必须创建“日志”文件夹,因为 IIS 不会自行执行此操作。
我在一个新项目中也发生了这种情况,其中模块被指定为 AspNetCoreModuleV2:
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
估计是我没有安装。我在我的一个较旧的 .NET Core 网站上看到,该模块不是 V2。从模块规范中删除 V2 在我的实例中修复了它:
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>