2016-06-03 1 views
1

Ich habe eine Website, die hauptsächlich in https ausgeführt wird. Ich habe ein paar Seiten, die mit Hardware interagieren müssen, die in http ausgeführt werden muss. Ich verwende eine Überschreibung von ActionLink, um das Protokoll von http anzugeben. Ich sehe http als den Link in der Browser-Konsole.Force http Seite auf ASP.NET MVC IIS

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

Das Problem (vielleicht ist es mit IIS 8.5) ist der Link kommt auf https.

Antwort

1

Sie können so etwas nicht mit den Extension-Methoden HtmlHelper ausführen, aber Sie können das gleiche Link-Generation-Framework verwenden, das die Erweiterungsmethode HtmlHelper verwendet. Unter den Abdeckungen verwendet ActionLink eine statische Methode GenerateLink genannt, die nicht ermöglicht es Ihnen, einen Protokollnamen zu liefern:

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) 

Also, mit dieser Methode mit der HtmlHelper Klasse Fähigkeit gekoppelt (die einen String emittiert) zu emittieren rohen HTML die Raw Methode verwenden, können Sie Ihre überschriebene Links schreiben:

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

I stellt sich heraus, hatte eine frühere Programmierer eine URL Rewrite-Routine in Global.asax.cs Datei, in der Application_PreRequestHandlerExecute Methode implementiert. Es nahm alle URLs und umschrieb sie als https.

@Andy Hopper Das Original @Html.ActionLink("Set Up WiFi", "setupWiFi", "Utility", "http", null, null, null, null) erzeugt einen korrekten http: // Link.