4

我正在将一些应用程序从 ASP.NET 5 beta7 迁移到 RC1。使用 HTTPPlatformHandler,我可以将这些 ASP.NET 5 RC1 应用程序中的任何一个作为 IIS 站点的根目录运行。但它们不会作为站点的子目录(右键单击“添加应用程序”)运行。完整的回复显示:

HTTP/1.1 404 Not Found
Content-Length: 0
Server: Kestrel
X-Powered-By: ASP.NET
Date: Tue, 24 Nov 2015 14:59:04 GMT

这不是权限问题,因为当应用程序是站点的根目录并使用相同的应用程序池时,路由会成功提供。

应用程序池配置为“无托管代码”和集成管道。

根应用程序的 web.config 如下所示:

<configuration>
  <system.webServer>
    <handlers>
      <add name="httpplatformhandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
    </handlers>
    <httpPlatform processPath="..\approot\web.cmd" arguments="" stdoutLogEnabled="false" stdoutLogFile="..\logs\stdout.log" startupTimeLimit="3600"></httpPlatform>
  </system.webServer>
</configuration>

对于子应用程序,我必须删除 httpplatformhandler 处理程序以避免错误“无法添加类型为 'add' 且唯一键属性 'name' 设置为 'httpplatformhandler' 的重复集合条目”。

现在我们必须使用 kestrel/httpplatformhandler,是否可以在站点下作为应用程序运行?

4

1 回答 1

10

这个问题从 beta8 开始,在 RC1 中仍然是一个悬而未决的问题。请参阅ASP.NET IIS 集成问题 #14。“修复即将到来。” @davidfowl说。“在修复可用之前,这是一种解决方法。我们正在与 httpPlatformHandler 团队合作修复 beta8 和 rc1 中发现的错误。”

解决方法是Startup.Configure像这样映射 IIS 应用程序路径:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.Map("/MyAppPath", (myAppPath) => this.ConfigureMyAppPath(myAppPath, env));
}

public void ConfigureMyAppPath(IApplicationBuilder app, IHostingEnvironment env)
{
    // the actual Configure code
}
于 2015-11-24T17:48:26.127 回答