Назад | Перейти на главную страницу

Размещение одного приложения с несколькими маршрутами тщеславия

Проблема

В настоящее время у нас есть два проекта ASP.NET MVC, обслуживаемых из Windows Server 2012 R2 с IIS 8.5 следующим образом:

Однако код этих проектов практически идентичен, поэтому мы находимся в процессе их объединения. В идеале у нас было бы

Мы создали новый общий проект, и он отлично работает server.com/commonоднако, когда мы включили правила перезаписи, все, что пытается перейти к server.com/foo или /bar выдаст ошибку 403, а именно:

Исправление проблем

Я почти уверен, что это не проблема с моими строками шаблона / замены, потому что если я изменю тип правила на Redirect, он создает желаемый целевой URL.

Если я создам правило перезаписи IIS ^common/test(.*)$common{R:1} затем common код работает правильно, но ^common-test(.*)$common{R:1} терпит неудачу, поэтому есть что-то предотвращение common от обслуживания с любого URL Кроме как /common.

Что сбивает с толку, так это то, что есть другое приложение, которое делает то же самое с /baz и /qux переписывается в общее приложение, /other. Если я укажу ^foo(.*)$other{R:1} он работает нормально (хотя, конечно, выполняет неправильный код приложения). Я не могу определить какие-либо другие существенные различия между этими двумя приложениями, которые могли бы вызвать это. Фактически, я скопировал почти все Web.config файл из other и все еще видел такое же поведение.

Я также исчерпал эти другие возможные решения:

Что еще могло быть причиной этого? Буду признателен за любые указатели.

Покопавшись еще немного и снова посовещавшись с разработчиками, other, Думаю, мы разобрались с этой проблемой.

В основном хостинг сайта server.com и все приложения под ним, которые будут участвовать в перезаписи (common, так же как foo и bar пока мы не будем готовы удалить их) должны выполняться в том же пуле приложений IIS.

Я скорректировал наш процесс развертывания с учетом этого. Мы используем Octopus, поэтому все сводилось к изменению одной переменной в каждом проекте. Для будущих читателей ваш процесс, вероятно, будет другим, но на всякий случай, надеюсь, это поможет кому-то другому: