我正在使用ASP.NET 5.我正在创建一个从AuthorizeFilter继承的新过滤器。
我正在压倒" OnAuthorizationAsync()"代码如下所示:
public override Task OnAuthorizationAsync(Microsoft.AspNet.Mvc.AuthorizationContext context)
{
var isSpecialCase = true;
if (isSpecialCase)
{
context.Result = new HttpNotFoundResult();
context.HttpContext.Response.StatusCode = 404;
return Task.FromResult(0);
}
//If not special case, lets the base handler do its work
else
{
return base.OnAuthorizationAsync(context);
}
}
除了一个问题外,这正是我想要的。这不会返回我在导航到真正不存在的页面时发现的典型404错误,而只是返回一个空白页面。
我认为主要问题是返回" HttpNotFoundResult"返回一个ActionResult(),而不是一个ViewResult()。但是,我希望该动作可以转换为所需的视图。
为什么它会返回一个空白页面,我怎样才能让它返回正确的404错误页面?
感谢您的时间。
答案 0 :(得分:0)
这样做:
throw new HttpException(404, "File Not Found");
或试试这个(mvc 6)
不要返回任务(删除return)只需将响应状态代码设置为404:
context.HttpContext.Response.StatusCode = 404;
根据您的托管情况,发回的上下文将有所不同。即在iis中为404设置自定义错误页面
同时检查您是否确实收到了404检查fiddler或浏览器开发工具中的响应。