use*_*261 10 .net asp.net nancy
我需要在Nancy中显示我的404错误页面
if (ErrorCode == 404)
{
return View["404.html"];
}
Run Code Online (Sandbox Code Playgroud)
怎么做?
r03*_*r03 12
nemesv的答案是正确的,但我只是想使用ViewRenderer而不是GenericFileResponse添加一个例子.
public class MyStatusHandler : IStatusCodeHandler
{
private IViewRenderer viewRenderer;
public MyStatusHandler(IViewRenderer viewRenderer)
{
this.viewRenderer = viewRenderer;
}
public bool HandlesStatusCode(HttpStatusCode statusCode,
NancyContext context)
{
return statusCode == HttpStatusCode.NotFound;
}
public void Handle(HttpStatusCode statusCode, NancyContext context)
{
var response = viewRenderer.RenderView(context, "/status/404");
response.StatusCode = statusCode;
context.Response = response;
}
}
Run Code Online (Sandbox Code Playgroud)
nem*_*esv 11
您只需要提供IStatusCodeHandler界面的实现(它将由Nancy自动选取).
在HandlesStatusCode方法中返回true为HttpStatusCode.NotFound.
在该Handle方法中,您需要Response在NancyContext包含错误页面内容的响应上设置属性.你可以使用例如GenericFileResponse:
public class My404Hander : IStatusCodeHandler
{
public bool HandlesStatusCode(HttpStatusCode statusCode,
NancyContext context)
{
return statusCode == HttpStatusCode.NotFound;
}
public void Handle(HttpStatusCode statusCode, NancyContext context)
{
var response = new GenericFileResponse("404.html", "text/html");
response.StatusCode = statusCode;
context.Response = response;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4054 次 |
| 最近记录: |