Wir versuchen, eine nicht gehostete Kopfzeile zu implementieren, die alles vor *.website.com
in ASP.NET akzeptiert. Da jede Unterdomäne akzeptiert wird, haben wir die HttpContextBase-Klasse erweitert, um eine benutzerdefinierte Methode hinzuzufügen.URL-Umleitung auf OnActionExecuting-Methode
public static bool ValidateHost(this HttpContextBase context)
{
var domain = context.Request.Url.Host;
//add logic to check if the host is valid and the subdomain exist in the database
return false;
}
wird diese Methode validieren, ob die context.Url.Host
eine gültige Host oder seine Sub-Domain in der Datenbank vorhanden, wenn nicht dann die Anforderung an den Host website.com
Standard umleiten. Zu tun, dass ich diese Zeile von Codes hinzugefügt unten in unserem BaseController
:
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!filterContext.HttpContext.ValidateUrl())
{
filterContext.HttpContext.Response.Redirect("https://website.com/");
return;
}
}
Es leitet Host auf Standard, wenn es false
zurückkehrt, jedoch wirft es eine Ausnahme: {"Server cannot append header after HTTP headers have been sent."}
Bin ich hier etwas fehlt oder die Logik ist unvollständig?