ASP.NET AuthorizeFilter Send to 404
本文关键字:to Send AuthorizeFilter NET ASP | 更新日期: 2023-09-27 18:01:21
我在ASP工作。净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错误页面?
感谢您的宝贵时间。
这样做:
throw new HttpException(404, "File Not Found");
或者试试这个(mvc 6)
不返回任务(删除返回),只需将响应状态码设置为404:
context.HttpContext.Response.StatusCode = 404;
根据您的主机,返回的上下文将有所不同。例如,在iis
中为404设置自定义错误页面也检查你实际上收到404检查响应在提琴或浏览器开发工具