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错误页面?

感谢您的宝贵时间。

ASP.NET AuthorizeFilter Send to 404

这样做:

throw new HttpException(404, "File Not Found");

或者试试这个(mvc 6)

不返回任务(删除返回),只需将响应状态码设置为404:

  context.HttpContext.Response.StatusCode = 404;

根据您的主机,返回的上下文将有所不同。例如,在iis

中为404设置自定义错误页面

也检查你实际上收到404检查响应在提琴或浏览器开发工具