如何在经典模式下支持池 运行 的 WebApi2 url 中的点
How to support dots in WebApi2 urls for a pool running in Classic mode
我需要在 Classic 模式下支持 url 中的点,例如 http://myserver/product/find?name=the.product.name
池 运行。
这里有很好的问题和答案:
- Dot character '.' in MVC Web API 2 for request such as api/people/STAFF.45287
- Dots in URL causes 404 with ASP.NET mvc and IIS
但其中 none 用于经典模式下的应用程序池 运行。
我试过:
<httpRuntime relaxedUrlToFileSystemMapping="true">...
<modules runAllManagedModulesForAllRequests="true">...
<handlers><add name="ApiURIs-ISAPI-Integrated-4.0" path="/people/*" verb="..." type="System.Web.Handlers.ransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<modules>...<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" />
none 他们在 Classic 中工作。
唯一不可接受的 解决方法似乎是添加尾随 /
(如果点在 URL 中)或添加额外参数(如果点在 URL 中)在参数中:
http://myserver/product/find.all/
http://myserver/product/find?name=the.product.name&useless=1
我无法切换到集成。
试试这个为经典模式设置正确的处理程序
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit"/>
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit"
path="*"
verb="GET,HEAD,POST,DEBUG,DELETE,OPTIONS"
modules="IsapiModule"
scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll"
preCondition="classicMode,runtimeVersionv4.0,bitness32"
responseBufferLimit="0" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit"/>
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit"
path="*"
verb="GET,HEAD,POST,DEBUG,DELETE,OPTIONS"
modules="IsapiModule"
scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"
preCondition="classicMode,runtimeVersionv4.0,bitness64"
responseBufferLimit="0" />
</handlers>
我需要在 Classic 模式下支持 url 中的点,例如 http://myserver/product/find?name=the.product.name
池 运行。
这里有很好的问题和答案:
- Dot character '.' in MVC Web API 2 for request such as api/people/STAFF.45287
- Dots in URL causes 404 with ASP.NET mvc and IIS
但其中 none 用于经典模式下的应用程序池 运行。
我试过:
<httpRuntime relaxedUrlToFileSystemMapping="true">...
<modules runAllManagedModulesForAllRequests="true">...
<handlers><add name="ApiURIs-ISAPI-Integrated-4.0" path="/people/*" verb="..." type="System.Web.Handlers.ransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<modules>...<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" />
none 他们在 Classic 中工作。
唯一不可接受的 解决方法似乎是添加尾随 /
(如果点在 URL 中)或添加额外参数(如果点在 URL 中)在参数中:
http://myserver/product/find.all/
http://myserver/product/find?name=the.product.name&useless=1
我无法切换到集成。
试试这个为经典模式设置正确的处理程序
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit"/>
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit"
path="*"
verb="GET,HEAD,POST,DEBUG,DELETE,OPTIONS"
modules="IsapiModule"
scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll"
preCondition="classicMode,runtimeVersionv4.0,bitness32"
responseBufferLimit="0" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit"/>
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit"
path="*"
verb="GET,HEAD,POST,DEBUG,DELETE,OPTIONS"
modules="IsapiModule"
scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"
preCondition="classicMode,runtimeVersionv4.0,bitness64"
responseBufferLimit="0" />
</handlers>