2015-11-18 4 views
4

Мне нужно поддерживать точки в URL-адресах, например http://myserver/product/find?name=the.product.name для бассейна, работающего в Классический режим.Как поддерживать точки в URL-адресах WebApi2 для пула, запущенного в классическом режиме

Есть хорошие вопросы и ответы здесь:

, но ни один из них не работает для пула приложений работает в классическом режиме.

Я попытался:

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

ни один из них не работает в Classic.

Единственный неприемлем обходной путь, кажется, добавить задний /, если точка находится в URL или дополнительного параметра, если точка находится в Params:

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

Я не могу переключиться на Интегрированный.

ответ

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>