Служба WCF REST - направляет все запросы к одной операции - PullRequest
0 голосов
/ 13 декабря 2011

Можно ли зарегистрировать маршрут для обработки всех форматов URL-адресов и направить их к определенной операции службы?

Например:

www.somedomain.com 
www.somedomain.com/anything
www.somedomain.com/anything/anything

и так далее ...

Большое спасибо

ОБНОВЛЕНИЕ: Это было глупо. Вот как это сделать:

 [WebGet(UriTemplate = "*")]

Однако это создает еще одну проблему для меня. Допустим, я использую следующий URL:

www.somedomain.com/Segment1/Segment2

Он сопоставлен с моей функцией (помечен вышеуказанным атрибутом), но URL входящего запроса выглядит следующим образом:

www.somedomain.com/Segment1

Остальная часть URL нигде не найдена.

Кто-нибудь знает, как получить доступ к исходному URL? до того, как соответствие шаблона изменит его?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 14 декабря 2011

Не отнимая ничего от решения syneptody (см. Выше), которое кажется более сильным и надежным, мне удалось разработать шаблон UriTemplate, который я искал:

[WebGet(UriTemplate = "/*")]

Это соответствует первому символу «/» последомен и предоставляет остальную часть URL вWebOperationContext.Current.IncomingRequest.UriTemplateMatch

Это именно то, что я искал.Просто если кто-нибудь когда-нибудь ищет это ...

1 голос
/ 13 декабря 2011

Это звучит как то, что лучше всего подавать на административном уровне. Может быть заманчиво попытаться зарегистрировать маршрут по умолчанию, но в этом случае я бы порекомендовал взглянуть на модуль перезаписи URL IIS:

http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/

Этот модуль очень мощный и может использоваться для перезаписи URL-адресов на основе подстановочных знаков или выражений регулярных выражений. Это позволит вам определить правило, которое переписывает любой URL, который приходит на www.somedomain.com, на канонический адрес вашей службы.

Например, чтобы просто переписать любой запрос, поступающий на somedomain.com, на somedomain.com/Segment1, вы можете попробовать что-то вроде следующего. (возможно, вам придется играть с подстановочным знаком)

<rule name="Canonical Host Name" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTP_HOST}" negate="true" pattern="^somedomain\.com*" />
  </conditions>
  <action type="Redirect" url="http://www.somedomain.com/Segment1" redirectType="Permanent" />
</rule>

Имейте в виду, что этот инструмент очень мощный, и если вы прочитаете документацию, вы увидите, что вы можете приспособить практически любую перестановку шаблонов.

Вот еще одна статья, в которой приведены некоторые примеры:

http://blogs.iis.net/ruslany/archive/2009/04/08/10-url-rewriting-tips-and-tricks.aspx

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