Ich habe dies getan, mit einem Httpmodule, so dass Sie Sie müssen sich nicht darum kümmern, den Code in jede Masterseite einzufügen (wenn Sie mehrere haben). Diese Version deaktiviert auch die Weiterleitung für localhost, so dass Sie kein SSL auf Ihrem eigenen Computer haben müssen. Im Grunde machen Sie eine neue HTTP-Modul wie folgt aus:
Public Class RedirectToHttpsModule
Implements IHttpModule
Public Sub Dispose() Implements IHttpModule.Dispose
End Sub
Public Sub Init(ByVal context As HttpApplication) Implements IHttpModule.Init
AddHandler context.BeginRequest, AddressOf context_BeginRequest
End Sub
Private Sub context_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
Dim application As HttpApplication = TryCast(sender, HttpApplication)
If Not application.Request.IsSecureConnection And Not application.Request.IsLocal Then
application.Response.Redirect(application.Request.Url.ToString().Replace(application.Request.Url.Scheme, "https"))
End If
End Sub
End Class
Sie müssen auch die entsprechende Zeile in der Datei web.config für die Httpmodule hinzufügen:
<httpModules>
<add type="RedirectToHttpsModule" name="RedirectToHttpsModule" />
</httpModules>
Nicht die besten Ideen. Sie führen eine clientseitige Umleitung zurück zur aufrufenden Seite. Wenn es aus irgendeinem Grund kein SSL gibt (kein Zertifikat oder schlechtes Zertifikat), gehen Sie in eine rekursive Schleife. Eine bessere Wahl wäre es, auf eine Fehlerseite umzuleiten, da der Benutzer keine sichere Seite/Seite eingeben sollte, es sei denn, der Code tut dies fälschlicherweise oder sie machen sich mit der URL herumärgern. –
Das funktioniert gut mit der Einschränkung, dass die Methode string.replace alle Vorkommen von "http: //" zu "https: //" ändert, nicht nur das ursprüngliche Schema. I.e. Dies kann die Abfragezeichenfolgenparameter beeinträchtigen. –
@Daniel Wenn Sie die: oder/Zeichen in Ihren Abfragezeichenfolgen haben, werden Sie andere Probleme haben;) –