Перезапись URL IIS7 возвращает 404 для запросов WCF (обратный прокси-сервер)
Я использую IIS7.5, .net 4.0. Я работаю на местном уровне.
Я установил Application Request Routing, Web Farm Framework, WebDeploy и UrlRewrite для настройки обратного прокси. Это работает нормально по большей части.
У меня есть два сайта:
DefaultWebSite (порт 80, пул приложений: пул приложений по умолчанию (.net 4)) иTarget (порт 8085, пул приложений: TargetAppPool (моя личность, .net 4)).У меня есть правило перезаписи на DefaultWebSite (созданный в соответствии с указаниями наIIS.net) который перенаправляет весь трафик localhost (порт 80) налокальный: 8085 так же, как подробно описано в ссылке выше. Это прекрасно работает для большинства типов документов (.aspx, .xap, .htm, .ico), но запрос MyService.svc не выполняется. Возвращает 404.
Чтобы было ясно:
Когда я вставляюлокальный: 8085 / MyService.svc в браузер я получаю запрашиваемую страницу WCF.
Когда я вставляюлокальный / MyService.svc в браузер я получаю 404.
Когда я вставляюлокальный: 8085 / MyIcon.ico в браузер я получаю запрошенный ресурс.
Когда я вставляюлокальный / MyIcon.ico в браузер я получаю запрошенный ресурс.
.svc - единственный найденный тип документа, который возвращает 404.
У меня есть две информации, которые могут быть актуальны.
Пулы приложений. Когда я меняю пул приложений DefaultWebSite на TargetAppPool, тогда 404 становится 500 («Не удалось сопоставить путь» / «). Все остальные запросы выполняются успешно, когда это изменение сделано. Не уверен, если это актуально или нет.
FREB (Отслеживание невыполненных запросов) Журнал. Я нашел страницу (http://blogs.msdn.com/b/asiatech/archive/2011/08/25/return-404-4-not-found-when-url-rewrite.aspx) который подробно описывает шаги в журнале FREB, когда перезапись URL-адреса более успешна, чем моя (позже произойдет сбой). Я не смог выяснить, как сгенерировать журнал FREB для успешной перезаписи (если это возможно), поэтому я могу сравнить только свой журнал FREB с журналом в этом блоге. Я вижу, что их шаг 21 (URL_CHANGED) в моем журнале FREB, но не 22 (URL_REWRITE_END). У меня недостаточно опыта работы с этими журналами, чтобы заметить что-то более важное (предложения приветствуются).
Мой главный вопрос: кто-нибудь знает, почему не переписываются только URL-адреса, запрашивающие ресурсы .svc?
Вторичный вопрос: кто-нибудь знает, как создать журнал FREB для успешного запроса (если это вообще возможно)?
Спасибо
Обновить:
Я изменил архитектуру, чтобы попытаться получить больше информации.
Я переместил веб-сайт Target на другой компьютер, на котором я установил Microsoft Network Monitor для захвата входящего трафика.
Прежде чем я изменил правило перезаписи URL-адреса, чтобы указать на этот новый веб-сайт, я получил правильный ответ, когда сделал запрос к MyService.svc на новом ПК. Хорошо.
Как только я изменил правило перезаписи, чтобы направить запрос на новый целевой веб-сайт, он отвечает, как и раньше (404). Я сделал и POST и GET запросы. В журнале сетевого монитора нет никаких признаков каких-либо запросов (все другие вызовы -200, 404 или другие - появляются в этом журнале).
Это заставляет меня думать, что есть что-то несовместимое с перезаписью URL и запросами * .svc. Я попытался сделать запрос к MyService.asmx (создав этот файл), и он правильно вернул страницу, поэтому он ограничен * .svc. Есть идеи?