在IIS 5中设置IISExpress和webapi中的基本路径

时间:2016-02-04 15:42:28

标签: asp.net asp.net-web-api asp.net-core iis-express kestrel-http-server

我需要让WebAPI项目在不同的基本路径下工作。我在Visual Studio下创建了一个使用WebAPI和ASP.NET 5的简单项目。

在基本路径设置为http://localhost:38170/的情况下,我的项目工作正常,我可以从测试控制器(http://localhost:38170/api/values)获取值。 在此阶段,我的IIS Express配置为:

<site name="WebApi" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\WebApi\src\WebApi\wwwroot" />
   </application>
   <bindings>
        <binding protocol="http" bindingInformation="*:38170:localhost" />
   </bindings>
</site>

我尝试在项目属性下更改App URL以反映我的需求: http://localhost:38170/xxx

现在运行项目并点击http://localhost:38170/xxx/api/values会产生404.尝试http://localhost:38170/api/values会从控制器返回值,就像没有任何更改一样。我注意到Visual Studio中的更改没有反映在IIS Express配置中(我不知道它们应该是......)。

我尝试在IISExpress上手动更改路径,就像在这个帖子中一样:Creating virtual directories in IIS express

<site name="WebApi" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/xxx" physicalPath="C:\WebApi\src\WebApi\wwwroot" />
   </application>
   <bindings>
        <binding protocol="http" bindingInformation="*:38170:localhost" />
   </bindings>
</site>

结果是:

http://localhost:38170/api/values - 500.19错误(配置错误),这是相当不错的 - 我没有计划这个工作

http://localhost:38170/xxx/api/values - 502.3 - 点击httpPlatformHandler的错误网关

我认为错误在httpPlatformHandler配置中的某处,但我不确定如何与IIS Express结合使用。我的web.config是:

<configuration>
  <system.webServer>
    <handlers>
      <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
    </handlers>
    <httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/>
  </system.webServer>
</configuration>

我尝试了随机更改,例如将路径属性更改为xxx/*,但没有任何效果。

编辑: 澄清这个问题。

如何使用httpPlatformHandler和Kestrel在IISExpress上的ASP.NET 5(ASP.NET Core)上设置WebAPI,以设置除root之外的基本路径。

1 个答案:

答案 0 :(得分:1)

您损坏了文件,因为您的修改符合IIS Express配置规则。

我建议您使用Jexus Manager等智能工具来操作它,然后您可以将Visual Studio项目与正确的URL同步。

例如,404是预期的,因为您的应用程序标记的路径设置为/,因此没有应用程序或虚拟目录来提供xxx。

500.19以后也是预期的,因为在添加名为xxx的有效虚拟目录时,您删除了根虚拟目录。这完全错误,因为根虚拟目录必须存在。