5

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

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

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

是否需要做一些特别的事情才能让 ASP.NET 5 WebAPI 项目在网站下的 IIS 应用程序文件夹中工作?

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

4

1 回答 1

3

Kiran Challa 上面的链接确实解决了这个问题。把它放在 Startup.cs 的 Configure 方法中

app.Map("/IISApplicationFolderName", (myAppPath) => this.ConfigureApp(myAppPath, env, loggerFactory));

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

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

于 2015-11-25T00:28:30.070 回答