Правило перезаписи URL IIS7 для сценария управления версиями служб - PullRequest
1 голос
/ 02 февраля 2012

Для создания версии сервиса RESTful я хотел бы сделать следующее с модулем перезаписи URL:

Отображение https://server/service/ на сервер / service / v1 /, если заголовок Accept (HTTP_ACCEPT?)is application / vnd.mycompany.service + xml

Для следующей версии службы я хотел бы увеличить номер версии типа носителя и развернуть v2, чтобы я мог сделать следующееотображение:

Отображение https://server/service/ на сервер / службу / v2 /, если заголовок Accept (HTTP_ACCEPT?) равен application / vnd.mycompany.service-2 + xml

I 'мы попробовали следующее правило, но я не могу заставить его работать:

<rules>
   <rule name="Route request to correct service version" patternSyntax="Wildcard">
      <match url="*service*" />
         <conditions>
            <add input="{HTTP_ACCEPT}" pattern="application/vnd.mycompany.*" />
         </conditions>
      <action type="Rewrite" url="Service/v1/{R:2}" logRewrittenUrl="true" />
   </rule>
</rules>

Любая помощь приветствуется!

- larsw

Ответы [ 2 ]

2 голосов
/ 02 февраля 2012

Будучи незнакомым с механизмом перезаписи URL-адресов, я не могу вам помочь напрямую, однако, если бы вы разместили свой сервис с Web API , то HttpMessageHandler был бы в состоянии сделать этот вид URLпреобразование на основе заголовка подтверждения.

1 голос
/ 02 февраля 2012

Решил.

a) Каким-то образом RedirectModule не был подключен в applicationHost.config. б) Сработала следующая конфигурация:

<rule name="Route request to correct service version" patternSyntax="Wildcard">                           
  <match url="*service*" />                                                                  
       <conditions logicalGrouping="MatchAny" trackAllCaptures="true">                                    
          <add input="{HTTP_ACCEPT}" pattern="*application/vnd.mycompany.*" />                             
       </conditions>                                                                                      
       <action type="Rewrite" url="service/v1{R:2}" logRewrittenUrl="true" />                  
</rule> 

c) У меня была дополнительная косая черта перед переменной {R: 2}, из-за которой переписанный URL имел двойную косую черту.

- larsw

...