Услуги отдыха WCF, размещенные в IIS, не поддерживают поставку и удаляют
-
30-09-2019 - |
Вопрос
Я создал службу WCF REST (AKA WebHTTP) в .NET 4, используя Microsoft WCF Stard Template 40. Я принимаю услугу в IIS 6.
Шаблон сервиса использует маршрутную в Global.Asax как способ создания «чистого» URL-адреса, который не включает в себя «.svc». Например:
http: // localhost / Рейсы / 878
Получите и постите работать нормально против этого URL, но поставить и удалить результат в HTTP 501, «не реализован».
Если я создаю простой файл .svc, как это:
<%@ ServiceHost Language="C#" Debug="true" Service="MyProject.FlightsService"%>
Тогда я могу использовать положить и удалять против этого URL:
http: // localhost / flandservice.svc / 878
Кто-нибудь знает, можно ли поставить и удалить, чтобы работать против «чистого» URL выше? Похоже, что нет способа настроить IIS, чтобы позволить этому, потому что нет расширения файла для настройки параметров, и я не хочу разрешать поставку и удалять глобально.
Решение
Я не работал с IIS6 некоторое время (и у меня нет его установленного, поэтому я ухожу с памятью здесь), но мне пришлось реализовать что-то подобное с IIS6 для маршрутизации Urnals Urals в IIS6.
Вы можете включить сопоставления сценариев WildCard в папке по базе папки путем взлома IIS Manager. Этот Сообщение блога это то, что я следовал, и это работает очень хорошо (и это связь Предоставляет немного больше фона). Это действительно ошибка в менеджере, а не сама IIS (по крайней мере, вот что я говорю себе).
Можете ли вы ссылаться на ваши услуги в подпапке на вашем сайте (например, http: // localhost / Services / flight / 878)? Если это так, и если вы реализуете IIS Manager Hack выше, я думаю, что вы можете включить все глаголы HTTP для этого каталога. Опять же, я ухожу с памяти (и мы только реализовали полученные посты, поэтому я не имел дело с классами и удаляемыми), поэтому я надеюсь, что я получаю это правильно.
Дайте мне знать, если вам нужна дополнительная информация или если моя память скользит. :) Надеюсь, это поможет!
Другие советы
Если ваше веб-приложение будет развернуто в нескольких средах Dev / Production, то наилучший способ, кажется, отключен WebDAV на уровне Web.config. Чтобы сделать это, удалите WebDavmodule и обработчик WebDAV, как в приведенном ниже примере:
<system.webserver>
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
</system.webserver>