Перезапись URL-адреса не работает должным образом — скрыть расширение svc

Я новичок в перезаписи URL.

Я создал службу WCF Rest и пытаюсь установить правило перезаписи, которое позволит вызывать службу, когда расширение svc скрыто.

У меня есть метод с именем «Тест» в этой службе, который я успешно вызываю с наличием расширения svc.

Что я сделал:

  1. Создал правило в веб-конфиге:

введите здесь описание изображения

  1. Проверено, что правило отображается в IIS в разделе «Функции перезаписи».

введите здесь описание изображения

  1. Подтверждено, что он работает так, как я ожидаю, нажав кнопку «тестовый шаблон» и введя данные URL:

введите здесь описание изображения

  1. Делал IISReset (несколько раз).

  2. Я получаю 404 при попытке этого URL:

http://localhost/WcfTestApp/Service1/Test

Дополнительные материалы:

Я также включил «Правила отслеживания неудачных запросов», но я не вижу журналов, созданных в папке.

Любые идеи, почему это не работает, как я ожидаю?

Заранее благодарю за любую помощь.


person Y.S    schedule 08.02.2015    source источник


Ответы (1)


Что я сделал, чтобы решить эту проблему:

  1. Я исправил, что файлы журнала трассировки неудачных запросов не отображались, оказывается, вам нужно настроить в настройках IIS коды состояния, для которых должна происходить трассировка, так как недостаточно умно выбирать все по умолчанию.

  2. Затем с помощью файла трассировки (который я открыл в IE) я заметил, что мое правило перезаписи нуждается в небольшой модификации, так как я мог видеть, какой URL-адрес я получил и на что он был перезаписан (что не сработало).

В конце концов, это то, что я использовал.

<rule name="RemoveSvcExtension" stopProcessing="true">
  <match url="^(.*)Service1/(.*)$" />
  <action type="Rewrite" url="{R:1}Service1.svc/{R:2}" logRewrittenUrl="true" />
</rule>
person Y.S    schedule 10.02.2015