如何在经典模式下运行的池中支持WebApi2 URL中的点

时间:2015-11-18 20:40:42

标签: asp.net-mvc iis-7 iis-6 asp.net-web-api2

对于以经典模式运行的游泳池,我需要支持http://myserver/product/find?name=the.product.name等网址中的点。

这里有很多问题和答案:

但它们都不适用于以经典模式运行的应用程序池。

我试过了:

  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" />
  5. 它们都不适用于Classic。

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

    • http://myserver/product/find.all/
    • http://myserver/product/find?name=the.product.name&useless=1

    我无法切换到集成。

1 个答案:

答案 0 :(得分:2)

尝试此操作为classicMode

设置正确的处理程序
  <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>