使用虚拟 directory/application 在 IIS 中托管 ASP.NET 5 个 WebAPI

Hosting ASP.NET 5 WebAPI in IIS using a virtual directory/application

我正在尝试在 IIS 中托管一个新的 ASP.NET 5 WebAPI 项目,并且我正在使用 ASP.NET 5 RC 1 运行时。我正在使用的项目是新 ASP.NET 5 WebAPI 项目的标准生成模板。 (没有代码更改。)

我已经使用命令行成功发布了项目,我可以使用特定端口(例如 localhost:12345)让应用程序在新网站上运行。例如,从项目模板访问 localhost:12345/api/values returns values.json 数据。

但是,当我尝试为项目使用 IIS 应用程序文件夹时,出现 404 错误。换句话说,localhost:12345/WebApi1/api/values returns 一个 404 错误。但我可以在事件查看器的随机端口上看到 Kestrel 运行,如果我访问该端口上的数据,我确实会返回 values.json,所以我知道 Kestrel 是 运行。

要使 ASP.NET 5 WebAPI 项目在网站下的 IIS 应用程序文件夹中运行,是否需要做一些特别的事情?

旁注:如果我使用 --server.urls 为 Kestrel 设置端口,则它在请求的端口和事件查看器中记录的随机端口上都是 运行。 (所以它实际上可以从 Kestrel 从 2 个 URL 获得,而不是 --server.urls 配置的单个 URL。)

Kiran Challa 上面的 link 确实解决了这个问题。将其放入 Startup.cs

中的 Configure 方法中
app.Map("/IISApplicationFolderName", (myAppPath) => this.ConfigureApp(myAppPath, env, loggerFactory));

其中 IISApplicationFolderName 是您要在其中托管的 IIS 应用程序文件夹的名称。其余配置代码移至新方法 ConfigureApp,因为您将配置委托给该方法。

这看起来也是一个临时补丁,直到 ASP.NET 5 RC2 发布。