2016-06-03 6 views
1

У меня есть веб-сайт, который работает в основном в https. У меня есть пара страниц, которые должны взаимодействовать с оборудованием, которое должно работать в http. Я использую переопределение ActionLink для указания протокола http. Я вижу http как ссылку в консоли браузера.Force http page на ASP.NET MVC IIS

@Html.ActionLink("Set Up WiFi", "setupWiFi", "Utility", "http", null, null, null, null) 

Проблема (может быть, с IIS 8.5) - это ссылка продолжает подниматься вверх по https.

ответ

1

Вы не можете сделать что-то подобное с помощью методов расширения HtmlHelper, но вы можете использовать ту же структуру генерации ссылок, что и метод расширения HtmlHelperActionLink. Под крышками, ActionLink использует статический метод GenerateLink, который делает позволит вам указать имя протокола:

public static string GenerateLink(RequestContext requestContext, RouteCollection routeCollection, string linkText, string routeName, string actionName, string controllerName, string protocol, string hostName, string fragment, RouteValueDictionary routeValues, IDictionary<string, object> htmlAttributes) 

Таким образом, используя этот метод (который излучает строку) в сочетании с HtmlHelper класса способностью испускает необработанный HTML с использованием методы Raw, вы можете написать свои перегруженные ссылки:

@Html.Raw(HtmlHelper.GenerateLink(
    ViewContext.RequestContext, 
    Html.RouteCollection, 
    "My Link Text Here", null, 
    "ActionNameHere", 
    "ControllerNameHere", 
    "http", 
    null, 
    null, 
    null, 
    null)) 
0

Я оказывается предыдущий программист осуществил URL переписывания рутины в Global.asax.cs файл, в методе Application_PreRequestHandlerExecute. Он принимал все URL-адреса и переписывал их как https.

@ Andy Hopper Оригинал @Html.ActionLink("Set Up WiFi", "setupWiFi", "Utility", "http", null, null, null, null) дает правильную ссылку http: //.

Смежные вопросы