IIS 托管 ASP 核心 API

IIS hosting an ASP Core API

我一直在处理 Web API 的以下问题,我的问题在于我应该如何配置 Web API 以与 IIS 一起工作(Windows Server 2012 R2) 考虑到我一直在关注此文档的 directions 但我仍然收到“无法显示此页面”浏览器错误:

Windows 服务器托管在 Azure 上。

我什至添加了与IIS身份验证相关的部分(认为这可能不会导致我的问题),adding/removing它没有任何作用。

 public void ConfigureServices(IServiceCollection services)
    {
        // Add framework services.
        services.AddOptions();

        services.Configure<IISOptions>(options =>
        {
            options.ForwardWindowsAuthentication = false;
        });
     }

关于我如何创建我的 publish 文件夹,我进行了以下操作:

dotnet publish

这导致了以下文件夹结构

根据 directory structure,我确实想念 wwwroot 和 Views,因为我在 project.json 中隐含地提到了它们,但我不需要它们,因为我有一个网络 api而不是 Web 表单应用程序。

"publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "Areas/**/Views",
      "appsettings.json",
      "web.config"
    ]
  }

在 IIS 上配置步骤 在我放置发布结果的主驱动器上创建了一个文件夹。 转到 IIS 管理器并添加了一个新网站 转到应用程序池并将 .NET CLR 版本设置为 'No Managed Code'

启动应用程序让我直接陷入浏览器错误 - 此页面无法显示

运行 来自 CMD dotnet mywebapi.dll WORKS...我已经用 Postman 测试了它(在 Windows 服务器上有 postman)。

您需要更多信息。

.\logs\stdout 启用并检查应用程序日志

<system.webServer>
    <handlers>
      <add 
         name="aspNetCore" 
         path="*" 
         verb="*" 
         modules="AspNetCoreModule" 
         resourceType="Unspecified"/>
    </handlers>
    <aspNetCore 
         processPath=".\MyApp.exe" 
         arguments="%LAUNCHER_ARGS%" 
         stdoutLogEnabled="false"                  <--- enable
         stdoutLogFile=".\logs\stdout" />          <--- set path
  </system.webServer>
</configuration>

检查 IIS 日志(您可能不必先启用它们)。事件查看器 > Windows 日志 > 应用程序。要向下钻取,您可以按事件级别等过滤当前日志...