Запуск приложения ASP.NET MVC за прокси-сервером с другим относительным корневым путем - PullRequest
4 голосов
/ 07 апреля 2010

У меня проблемы с путями в приложении ASP.NET MVC, которое работает за прокси-сервером.

Наш корневой путь приложения IIS, например, http://server/MyApp/

означает, что все URL-адресаиспользуя корень приложения («~ /», Url.Action («MyAction», «MyController»)) разрешаются в «/ MyApp»

Теперь мы работаем за прокси-сервером, который пересылает все запросы,но требует от вас доступа к приложению через URL-адрес, подобный следующему: "/ Secury / Proxy / RubbishUrl / MyApp"

Поскольку URL-адрес прокси-сервера доступен только на клиентском компьютере, я подумал о создании файла cookie с префиксом путии вставьте его перед каждым сгенерированным URL на сервере.

Теперь вопрос в том, как лучше всего расположить код для изменения каждого URL, который разрешен / отправлен клиенту (ресурсам, действиям контроллера, изображениям и т. д.)?

Каждый путь в приложении определяется с помощью методов MVC (Url.Content, Url.Action и т. Д.).

Обновление: Больше не ищем ответа(тхотя все еще заинтересован в правильном решении)

В большинстве случаев прокси-серверы выполняют свои собственные преобразования URL, однако в этом случае прокси-сервер игнорирует пути, которые передаются в JSON, и они обрабатываются.

Мое «решение» на данный момент - просто не передавать пути в JSON, а вместо этого:

  • с использованием правильных идентификаторов и значений в запросах JSON
  • создание шаблона вURL в HTML (которые разрешены правильно),
  • заменяет идентификаторы и значения в шаблоне URL на значения из запросов JSON

Этот метод на самом деле намного «чище»'путь IMO, а затем передать URL.

1 Ответ

0 голосов
/ 15 апреля 2010

Вы можете создать свою собственную фабрику контроллеров asp.net mvc, где решать, какой контроллер и действие будет обслуживать ответ, основываясь на запрошенном URL. Проверьте этот URL для хорошего сообщения в блоге о том, как это сделать - http://nayyeri.net/custom-controller-factory-in-asp-net-mvc.

...