在 IIS Express 中设置基本路径,在 ASP.NET 中设置 Web API 5
set base path in IISExpress and webapi in ASP.NET 5
我需要让 WebAPI 项目在与平时不同的基本路径下工作。我在 Visual Studio 下创建了使用 WebAPI 和 ASP.NET 5.
的简单项目
在基本路径下设置为 http://localhost:38170/ my project works fine and I'm able to get values from test controller (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 results in 404. Trying http://localhost:38170/api/values returns 值,就好像什么都没有改变一样。我注意到 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 核心)上设置 WebAPI 以设置根目录以外的基本路径。
您损坏了文件,因为您的修改符合 IIS Express 配置规则。
我建议你使用Jexus Manager 等智能工具来操作它,然后你就可以将Visual Studio 项目与正确的URL同步。
例如,404 是预期的,因为您的应用程序标记的路径设置为 /,因此没有应用程序或虚拟目录来为 xxx 提供服务。
500.19 之后的版本也在意料之中,因为在添加名为 xxx 的有效虚拟目录时,您删除了根虚拟目录。这是完全错误的,因为根虚拟目录必须存在。
我需要让 WebAPI 项目在与平时不同的基本路径下工作。我在 Visual Studio 下创建了使用 WebAPI 和 ASP.NET 5.
的简单项目在基本路径下设置为 http://localhost:38170/ my project works fine and I'm able to get values from test controller (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 results in 404. Trying http://localhost:38170/api/values returns 值,就好像什么都没有改变一样。我注意到 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 核心)上设置 WebAPI 以设置根目录以外的基本路径。
您损坏了文件,因为您的修改符合 IIS Express 配置规则。
我建议你使用Jexus Manager 等智能工具来操作它,然后你就可以将Visual Studio 项目与正确的URL同步。
例如,404 是预期的,因为您的应用程序标记的路径设置为 /,因此没有应用程序或虚拟目录来为 xxx 提供服务。
500.19 之后的版本也在意料之中,因为在添加名为 xxx 的有效虚拟目录时,您删除了根虚拟目录。这是完全错误的,因为根虚拟目录必须存在。