加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何从ASP.NET MVC应用程序返回404响应?

发布时间:2020-12-16 09:17:51 所属栏目:asp.Net 来源:网络整理
导读:我有一个Controller,它从数据库中提取图像,重新调整大小,将结果缓存在磁盘上,然后将图像作为Content()结果吐出. 最近我在我的网站上添加了对“Scrape-buster”代码的支持.也就是说,我将每个图像附加的唯一代码的哈希加上一些盐,并将该哈希的前几个字符传递给
我有一个Controller,它从数据库中提取图像,重新调整大小,将结果缓存在磁盘上,然后将图像作为Content()结果吐出.

最近我在我的网站上添加了对“Scrape-buster”代码的支持.也就是说,我将每个图像附加的唯一代码的哈希加上一些盐,并将该哈希的前几个字符传递给用户,以便在检索期间进行确认.这使我可以防止人们从网站上刮掉每一张图片. (没有登录,也刮掉HTML,就是这样.)

无论如何,如果ScrapeBuster代码不正确,我想从我的控制器返回404错误.有没有内置的方法来做到这一点,或者我正在寻找构建自定义ActionResult?

解决方法

最简单的(可能不是最干净的)方法是抛出 HttpException

public static void Throw404()
{
    throw new HttpException(404,"The resource cannot be found");
}

您应该确保调用堆栈中没有人捕获异常.这样,输出将看起来像普通的ASP.NET黄色死亡屏幕404.

更简洁的方法是返回自定义结果:

public sealed class HttpNotFoundResult : ActionResult
{
    public override void ExecuteResult(ControllerContext context)
    {
        if (context == null)
            throw new ArgumentNullException("context");

        context.HttpContext.Response.StatusCode = 404;
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读