如何在经典模式下支持池 运行 的 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 池 运行。

这里有很好的问题和答案:

但其中 none 用于经典模式下的应用程序池 运行。

我试过:

  1. <httpRuntime relaxedUrlToFileSystemMapping="true">...
  2. <modules runAllManagedModulesForAllRequests="true">...
  3. <handlers><add name="ApiURIs-ISAPI-Integrated-4.0" path="/people/*" verb="..." type="System.Web.Handlers.ransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
  4. <modules>...<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" />

none 他们在 Classic 中工作。

唯一不可接受的 解决方法似乎是添加尾随 /(如果点在 URL 中)或添加额外参数(如果点在 URL 中)在参数中:

我无法切换到集成。

试试这个为经典模式设置正确的处理程序

  <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>