IIS托管ASP核心API的

时间:2016-10-11 20:26:49

标签: asp.net azure iis asp.net-core windows-server-2012-r2

我一直在使用Web API遇到以下问题,我的问题在于我应该如何配置Web API以使用IIS(Windows Server 2012 R2),考虑到我一直关注的事实这个文档的directions我仍然得到'此页面无法显示'浏览器错误:

Windows Server托管在Azure上。

我甚至添加了与IIS身份验证相关的部分(认为这可能不会导致我的问题),添加/删除它无论如何都没有效果。

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

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

就像我创建publish文件夹的方式一样,我按照以下步骤进行了操作:

dotnet publish

这导致了以下文件夹结构

  • refs
  • 运行时
  • 很多.dll(对各种程序集的引用,如aspnetcore.mvc,httpclient等)
  • 的web.config
  • mywebAPI.deps(带有依赖项的json文件)
  • mywebAPI.dll
  • mywebAPI.pdb
  • appsettings.JSON

根据directory structure我确实错过了wwwroot和Views,因为我在project.json中隐含地提到了它们,但我不需要它们,因为我有一个web api而不是web表单app

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

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

enter image description here

启动应用程序会引发我对此浏览器错误 - 此页面无法显示

从CMD dotnet运行mywebapi.dll WORKS ...我已经用Postman测试了它(在Windows Server上有邮差)。

enter image description here

1 个答案:

答案 0 :(得分:1)

您需要更多信息。

.\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日志(您可能不必先启用它们)。事件查看器&gt; Windows日志&gt;应用。要向下钻取,您可以按事件级别等过滤当前日志...

IIS Application Logs