ASP.net Core WebAPI没有从IIS开始

时间:2018-04-25 07:37:17

标签: c# iis asp.net-core iis-10

我正在尝试托管像Microsoft Docs这样的ASP.net核心WebAPI: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。

Web API配置如下:

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在服务器上发布应用程序,但应用程序才刚刚开始。没有输出也没有错误。我不确定我是否遗漏了某些内容,或者我的配置是否失败。 另外我想知道,如果有办法看到正在运行的应用程序。

2 个答案:

答案 0 :(得分:2)

在我的同事的帮助下,我找到了解决方案:

权限:

IIS必须在站点文件夹上拥有权限。必须检查,应用程序池用户是否拥有文件夹的权限。

我已经在我的所有网站所属的“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日志显示了Argument Error。 解决方案是将processPath更改为“dotnet”,如此loses the offset information中所述。

<aspNetCore processPath="dotnet" 
    arguments=".\Agent.DuZu.Web.dll"
    stdoutLogEnabled="true" 
    stdoutLogFile=".\logs\stdout" 
    forwardWindowsAuthToken="false" />

另外需要提及的是,必须创建“logs”文件夹,因为IIS本身不会这样做。

答案 1 :(得分:0)

这对我来说也发生在一个新项目中,其中该模块被指定为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>