Sie können die folgende Filterklasse verwenden, um Ihre Aktionsmethode zur Verwendung von SSL zu erzwingen. Dies wird Ihre Anfrage mit einer GET-Methode oder einem anderen Verb behandeln. Wenn es eine get-Methode ist, wird der Browser umgeleitet (mithilfe der Standortkopfzeile)) zu der neuen URI. Andernfalls wird eine Nachricht zur Verwendung von https
angezeigt. Im folgenden Code wird angezeigt, dass Sie die OnAuthorization-Methode nach dem Erben von AuthorizationFilterAttribute überschreiben müssen.
string _HtmlBody = string.Empty;
UriBuilder httpsNewUri;
var _Request = actionContext.Request;
if (_Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
_HtmlBody = "<p>Https is required</p>";
if (_Request.Method.Method == "GET"){
actionContext.Response = _Request.CreateResponse(HttpStatusCode.Found);
actionContext.Response.Content = new StringContent(_HtmlBody, Encoding.UTF8, "text/html");
httpsNewUri = new UriBuilder(_Request.RequestUri);
httpsNewUri.Scheme = Uri.UriSchemeHttps;
httpsNewUri.Port = 443;
//To ask a web browser to load a different web page with the same URI but different scheme and port
actionContext.Response.Headers.Location = httpsNewUri.Uri;
}else{
actionContext.Response = _Request.CreateResponse(HttpStatusCode.NotFound);
actionContext.Response.Content = new StringContent(_HtmlBody, Encoding.UTF8, "text/html");
}
}
Dies ist ein Artikel über diese Frage, die lesenswert: https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/Arbeits-mit-ssl-in-web-api – Tohid