【问题标题】:ASP.net Core WebAPI not starting behind IISASP.net Core WebAPI 不在 IIS 后面启动
【发布时间】:2018-10-05 14:14:29
【问题描述】:

我正在尝试托管一个 ASP.net Core WebAPI,就像 Microsoft Docs 告诉我的那样: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 配置如下:

程序.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 在服务器上发布应用程序,但应用程序无法启动。没有输出也没有错误。我不确定我是否遗漏了什么,或者我的配置是否失败。 我也想知道,是否有办法查看正在运行的应用程序。

【问题讨论】:

  • 您是否确认所有文件都通过 WebDeploy 传输。如果您 FTP 文件,也会发生同样的事情吗?
  • 所有文件都在服务器上进行部署。我也尝试过使用 FTP,同样的行为。
  • 错误信息到底是什么?
  • @TanveerBadar 这就是问题所在,没有错误消息。它只是把文件放在那里,什么都没有发生。
  • 您是否尝试安装 SDK 只是为了确保它与缺少的依赖项无关?没有错误很难推理发生了什么。您的 web.config 与我正在工作的完全一样..

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    权限:

    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" />
    

    所以标准输出日志显示参数错误。 对此的解决方案是将 processPath 更改为“dotnet”,如 question 中所述。

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

    另外要提的是,必须创建“日志”文件夹,因为 IIS 不会自行创建。

    【讨论】:

      猜你喜欢
      • 2019-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 2020-12-07
      • 2021-12-30
      相关资源
      最近更新 更多