使用虚拟目录/应用程序在IIS中托管ASP.NET 5 WebAPI

时间:2015-11-24 22:01:47

标签: iis-7.5 asp.net-web-api2 asp.net-core iis-8 kestrel-http-server

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

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

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

是否需要做一些特殊工作才能使ASP.NET 5 WebAPI项目在网站下的IIS Application文件夹中工作?

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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