OWINを使用してホストされているNancyを使用しているウェブサイトがあります。私はパススルーするNOTFOUND要求、私のバンドル.lessファイルやminiprofiler-結果または静的ファイルのようなものとなるよう必要NancyとOWINのカスタムエラーページを表示することはできません
public void Configuration(IAppBuilder app)
{
app.UseNancy(o => {
o.PassThroughWhenStatusCodesAre(
HttpStatusCode.NotFound,
HttpStatusCode.InternalServerError
);
o.Bootstrapper = new Bootstrapper();
});
app.UseStageMarker(PipelineStage.MapHandler);
}
:私のStartup.csファイルで
次のように私はPassThroughOptionsを定義します私のサイト(robots.txtまたはsitemap.xml)のルートにあります。
また、スタティックファイル(または無制限のバンドル/ミニプロファイラ)と私のモジュールのメソッドに見つからない実際のものとを区別するために、カスタムヘッダをチェックする404コード用のカスタムStatusCodeHandlerもあります。
public void Handle(HttpStatusCode statusCode, NancyContext context)
{
Log.Warn("Not found: " + context.Request.Url);
base.Handle(statusCode, context, "Errors/NotFound");
}
このハンドラは実際にエラーページを表示する必要があります。
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);
}
エラーページは表示されません。リクエストは3回処理され、最終的にはデフォルトのIISエラーページが表示されます(httpエラーの場合はerrorMode = "Custom"を使用)。単純に白いページ(httpエラーの場合はexistingResponse = "PassThrough"を使用)。
OWINでナンシーウェブサイトをホスティングしているときにカスタムエラーページと同じように簡単に表示する方法はありますか?