Как заставить http или https с помощью Url.Action <tController> - PullRequest
1 голос
/ 01 июня 2011

Я использую строго типизированный метод Url.Action из MvcContrib, чтобы выполнить генерацию URL на моем сайте.

Например:

Url.Action<CategoriesController>(c => c.List())

Есть ли способ заставить URL-адреса, сгенерированные этим методом, использовать http или https? Сейчас кажется, что он просто создает URL-адреса относительно текущей страницы. Так, например, если я нахожусь на странице https, все ссылки в верхнем и нижнем колонтитулах используют https, даже если я не хочу, чтобы эти страницы были безопасными.

Что-то вроде:

Url.Action<CategoriesController>(c => c.List(), protocol: "https")

Ответы [ 2 ]

3 голосов
/ 01 июня 2011

Я не уверен, что это полностью отвечает на ваш вопрос, но вы можете добавить атрибут [RequireHttps] к любому действию (или контроллеру), которое вы хотите принудительно использовать в SSL. Поскольку Url.Action создаст полный URL-адрес на основе текущей схемы / полномочий, он первоначально покажет ссылки на http://site/controller/action. Но атрибут RequireHttps переключит схему на HTTPS для вас и один раз в этой схеме. , Url.Action соответствующим образом вернет URL https://site/controller/action.

1 голос
/ 02 июня 2011

К сожалению, расширение действия MvcContrib не поддерживает создание URL-адресов https.

Внутренне этот метод вызывает метод Microsoft LinkBuilder.BuildUrlFromExpression из библиотеки MvcFutures, который очень упрощен.Он поддерживает только создание простых относительных ссылок и не поддерживает многие функции, встроенные в обычный метод Url.Action, включая https и области.Пока расширения MvcContrib полагаются на этот метод внутренне, он не будет поддерживать эти дополнительные функции.

Было бы лучше придерживаться обычного действия Url.Action Mvc, если вы хотите воспользоваться этими функциями.

...