Принудительная генерация HTTP-ссылок в режиме HTTPS - PullRequest
0 голосов
/ 02 июня 2011

Я использую SSL в своем приложении ASP.NET MVC 3.Как только пользователь входит в режим HTTPS, все ссылки на странице генерируются с предисловием HTTPS, но я бы хотел «позволить пользователю выйти из» режима HTTPS и вернуться к HTTP, когда обмен критической информацией уже былготово.

Есть ли в конфигурации Routes что-то вроде:

/Home/Index will be always HTTP

Я пробовал:

<a href="@Url.Action("Index","Home",null,"http")">Normal</a>

Но это не удается, когдаЯ использую пользовательский порт.Я имею в виду, в начале это: http://127.0.0.1:5104/Home/Index, но когда ссылка генерируется из HTTPS, она выглядит: http://127.0.0.1/Home/Index и, конечно, она не работает

С уважением.

1 Ответ

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

Поскольку пользователь просматривает страницу HTTPS, сам запрос не содержит никакой информации относительно того, на каком порту выполняется HTTP-привязка.это означает, что вам нужно будет указать его самостоятельно (возможно, это значение можно получить из файла конфигурации IIS).

Ниже приведен пример вспомогательной функции, позволяющей указать, к какому http-порту относится запросследует направить на.

public static string HttpAction(this UrlHelper helper, string action, 
    string controller, object routeValues, int port)
{
    var url = helper.Action(action, controller, routeValues, "http");
    var uri = new Uri(url);

    var builder = new UriBuilder(uri.Scheme, uri.Host, port, uri.AbsolutePath, uri.Query);
    return builder.ToString();            
}

Использование:

@Url.HttpAction("index", "account", new { val = 5 }, 5055);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...