Ich habe eine Website mit Nancy, die mit OWIN gehostet wird.Unmöglich, benutzerdefinierte Fehler Seite mit Nancy auf OWIN zu zeigen
In meiner Startup.cs Datei definiere ich die PassThroughOptions wie folgt:
public void Configuration(IAppBuilder app)
{
app.UseNancy(o => {
o.PassThroughWhenStatusCodesAre(
HttpStatusCode.NotFound,
HttpStatusCode.InternalServerError
);
o.Bootstrapper = new Bootstrapper();
});
app.UseStageMarker(PipelineStage.MapHandler);
}
Ich brauche die NotFound Anfragen an Pass-Through, so dass Dinge wie meine gebündelt .Weniger Dateien oder Miniprofiler-Ergebnisse oder statische Dateien in der Wurzel meiner Website (robots.txt oder sitemap.xml) arbeiten.
Ich habe auch einen benutzerdefinierten StatusCodeHandler für den 404-Code, der auch einen benutzerdefinierten Header überprüft, um zwischen statischen Dateien (oder .less Bundles/Miniprofiler) und tatsächlichen Sachen zu unterscheiden, die nicht in den Methoden meiner Module gefunden werden.
public void Handle(HttpStatusCode statusCode, NancyContext context)
{
Log.Warn("Not found: " + context.Request.Url);
base.Handle(statusCode, context, "Errors/NotFound");
}
Dieser Handler sollte dann tatsächlich die Fehlerseite anzeigen.
protected void Handle(HttpStatusCode statusCode, NancyContext context, string view)
{
var response = new Negotiator(context)
.WithModel(GetErrorModel(context))
.WithStatusCode(statusCode)
.WithView(view);
context.Response = responseNegotiator.NegotiateResponse(response, context);
}
Aber die Fehlerseite wird nie angezeigt. Die Anfrage wird dreimal bearbeitet und schließlich wird die Standard-IIS-Fehlerseite angezeigt (mit errorMode = "Custom" für httpErrors) oder einfach eine weiße Seite (mit existingResponse = "PassThrough" für httpErrors).
Gibt es eine Möglichkeit, so etwas wie eine benutzerdefinierte Fehlerseite anzuzeigen, wenn Sie eine Nancy-Website auf OWIN hosten?