Почему IIS7 загружает неправильную сборку службы WCF для конечной точки?

Я пытаюсь разместить две версии одной и той же службы WCF на одном сервере. Две рассматриваемые сервисные сборки имеют одинаковый номер версии и отличаются только содержанием. Однако они расположены в двух разных физических местах, на которые указывают два отдельных (но одинаково названных) виртуальных каталога в двух отдельных сайтах IIS. Каждый сайт привязан к отдельному имени хоста, и приложение, с которым я сейчас тестирую, настроено на отправку запросов на правильный хост (я переопределяю разрешение доменного имени с помощью файла hosts). Кроме того, каждый сайт, на котором размещается эта служба использует отдельный (но идентично настроенный) пул приложений.

Я думал, что все эти меры будут достаточны для устранения любой возможной путаницы со стороны IIS относительно того, какую сборку я пытаюсь выполнить, когда отправляю запрос на конкретный URL-адрес конечной точки. Однако запросы ко второму сайту продолжают обрабатываться версией сборки, на которую указывает первый сайт. Мой сеанс отладки Visual Studio подключен к каждому запущенному экземпляру w3wp.exe, что исключает возможность отладки неправильного пула приложений. Когда я открываю файлы исходного кода для каждой версии службы, точки останова в обоих файлах указывают, что символы были загружены и что они будут поражены (хотя это изменилось после того, как я выключил IIS и удалил временные файлы ASP.Net для сервис.)

Чтобы сделать ситуацию более странной, я успешно запускаю и отлаживаю две версии одного и того же веб-приложения по одной схеме, и все работает правильно. Похоже, единственное отличие состоит в том, что одна пара виртуальных каталогов содержит веб-приложения, а другая пара виртуальных каталогов содержит службы WCF.

Когда я смотрю на панель модулей, это указывает на то, что версия загружаемой сборки поступает из временной папки ASP.NET.

Кто-нибудь может объяснить, почему IIS загружает не ту версию рассматриваемой сборки? Это как-то связано с кэшированием в папке Temporary ASP.Net?

1 ответ

Просто чтобы подтвердить, что правильная конечная точка получает удар, я закрыл первый сайт и повторил запрос. Исключение, которое я получил, прояснило, что конечная точка для второго сайта не была повреждена.

Теперь мне просто нужно выяснить, почему элемент конечной точки в файле web.config проекта игнорируется в пользу конечной точки, определенной в machine.config.

Другие вопросы по тегам