首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从ASP.NET MVC操作发送HTTP 404响应的正确方法是什么?

在ASP.NET MVC中,可以通过以下几种方法来发送HTTP 404响应:

  1. 使用HttpNotFoundResult

在控制器中返回HttpNotFoundResult类型的实例,这将返回HTTP 404响应。例如:

代码语言:csharp
复制

public ActionResult MyAction()

{

代码语言:txt
复制
   // 检查某个条件
代码语言:txt
复制
   if (someCondition)
代码语言:txt
复制
   {
代码语言:txt
复制
       return new HttpNotFoundResult("找不到请求的资源");
代码语言:txt
复制
   }
代码语言:txt
复制
   // 正常操作
代码语言:txt
复制
   return View();

}

代码语言:txt
复制
  1. 使用HttpException

在控制器中抛出HttpException异常,并设置状态代码为404。例如:

代码语言:csharp
复制

public ActionResult MyAction()

{

代码语言:txt
复制
   // 检查某个条件
代码语言:txt
复制
   if (someCondition)
代码语言:txt
复制
   {
代码语言:txt
复制
       throw new HttpException(404, "找不到请求的资源");
代码语言:txt
复制
   }
代码语言:txt
复制
   // 正常操作
代码语言:txt
复制
   return View();

}

代码语言:txt
复制
  1. 使用Response.StatusCode

在控制器中设置Response.StatusCode为404,并返回一个视图或内容。例如:

代码语言:csharp
复制

public ActionResult MyAction()

{

代码语言:txt
复制
   // 检查某个条件
代码语言:txt
复制
   if (someCondition)
代码语言:txt
复制
   {
代码语言:txt
复制
       Response.StatusCode = 404;
代码语言:txt
复制
       return View("NotFound");
代码语言:txt
复制
   }
代码语言:txt
复制
   // 正常操作
代码语言:txt
复制
   return View();

}

代码语言:txt
复制

在这些方法中,第一种方法(HttpNotFoundResult)是最推荐的方法,因为它更符合ASP.NET MVC的设计原则,并且可以更好地处理HTTP 404响应。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Asp.Net Web API(二)

ASP.NET Web API 可以自动序列化你模型到JSON,XML或一些其它格式,然后把已序列化数据写入到HTTP响应消息正文。只要客户端可以读取序列化数据,那么它同样可以反序列这个对象。...(item); 4 return item; 5 } 请注意这个方法两个事情:       这个方法名字以“Post”开头,为了创建一个新产品,这个客户端将发送一个HTTP...位置:当服务端创建一个资源时,它应该在响应Location标头中包含这个资源URI。       ASP.NET Web API使它容易操作HTTP响应消息。...默认情况下,ASP.NET Web API框架路由获取简单参数类型,请求正文获取复杂类型。 第五个方法:删除产品,在控制器添加代码如下。...上述测试我们发现我们路由只是“api/{controler}”就成功返回了GetProducts方法数据,这也是ASP.NET Web API与ASP.NET MVC 之间区别。

1.9K10

七天学会ASP.NET MVC (六)——线程问题、异常处理、自定义URL

系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递 七天学会ASP.NET MVC (三)——...ASP.Net MVC 数据处理 七天学会ASP.NET MVC (四)——用户授权认证问题 七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理 七天学会ASP.NET MVC...以上问题解决方法 是否存在疑虑,当发送请求时,如何获取响应? 众人皆知编程规则,程序中任何事件都是由线程执行,请求事件也是。...Asp.net  framework 维护线程池,每次当请求发送到webserver时,会线程池中分配空闲线程处理此请求。这种线程被称为worker线程。...worker 线程初始化异步操作,并返回到线程池服务其他请求。异步操作可使用CLR 线程来继续执行。 存在问题就是,CLR 线程无法返回响应,一旦它完成了异步操作,它会通知Asp.net

3.9K100

七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC

主要是因为ASP.NET Webform性能问题。在Web应用程序中两方面来定义性能: 1. 响应时间: 服务器响应请求耗时 2. 带宽消耗: 同时可传输多少数据。...首先我们Controller 控制器开始,因为Controller是MVC体系架构核心部分。 你是否真的理解Asp.Net MVCController(控制器)?...当点击Button时,一个简单HTTP请求会发送到服务器。差别在于Customer Name,Address以及Age中输入内容将随着请求一起发送。...注意:在Asp.Net Web Forms中默认返回请求是HTML,如果需要返回其他类型请求,就必须创建HTTP 处理器,重写内容类型。这些操作Asp.net中是很困难。...在Asp.net MVC中是非常简单。如果返回类型是”String“直接返回,不需要发送完整HTML。 3. 如果Action 方法中返回对象值会出现什么意外情况?

3.1K60

ASP.NET Core 2.0 建立规范 REST API -- 预备知识

统一接口: 这里分为4点, 他们是: 资源标识符(URI), 资源操作(也就是方法Method, HTTP动词), 自描述响应(可以认为是媒体类型Media-Type), 以及状态管理(超媒体作为应用状态引擎...缓存: 缓存约束派生于无状态约束, 它要求服务端返回响应必须明确表明是可缓存还是不可缓存. 6. 按需编码: 这允许客户端可以服务端访问特定资源而无须知晓如何处理它们....方法并没有正确使用, 结果复杂度不算太高....例如这两个查询: POST http://host/api/authors POST http://host/api/authors/{id} 2级, 动词: 正确使用了HTTP动词, 状态码也正确使用了...过滤器和中间件区别:中间件是应用程序级别的,它可以处理每个发送过来请求;而过滤器是针对MVC,它只会处理发往MVC请求。

1.6K00

入门:添加一个支持获取单一资源以及支持POST,PUT和DELETE方法

WCF Web API支持多个宿主环境:自宿主(windows服务或者控制台)和IIS宿主(asp.net webform/mvc)。...这个入门文章主要演示在ASP.NET MVC3网站宿主,主要演示如何在一个Web API上允许更新: 如何检索一个特定项资源 如何在API上启用HTTP POST, PUT和DELETE方法 如何通过...>8New Person2 6、从一个简单HTML表单发送内容 Web API包含HTML...GET,然后执行,返回状态码为404 HTTP/1.1 404 Not Found Server: ASP.NET Development Server/10.0.0.0 Date: Tue...DELETE,然后执行,也返回状态码404 总结:在这篇入门文章里我们学习了以下内容: 如何添加检索一个单一资源 如何设置一个方法返回一个404  处理异常情况下HTTP 响应

1.3K70

ASP.NET Core使用Middleware模拟Custom Error Page功能

一、使用场景 在传统ASP.NET MVC中,我们可以使用HandleErrorAttribute特性来具体指定如何处理Action抛出异常.只要某个Action设置了HandleErrorAttribute...有时候在Error视图中也会发生错误,这时ASP.NET/MVC将会显示其默认错误页面(黄底红字),为了避免这种情况出现,我们都是在Web.config文件customErrors节中来自定义错误页面...> 二、.NET Core实现   既然想用ASP.NET Core中中间件模拟Custom Error Page功能,那首先我配置下手。...": { "401": "/Error/Http401Page", "403": "/Error/Http403Page", "404": "/Error/Http404Page", "...当然我们最后,还要为这个中间件添加一个扩展方法ASP.NET Core中为 IApplictionBuilder创建了好多扩展方法,其实也好比它名子一样,它就应该是一个建造者模式。

1.2K30

ASP.NET Core 6框架揭秘》勘误

P47第3段 原文:首先 ASP.NET Core MVC 框架在处理请求过程中会根据路由解析生成参数,得到目标 Controller 类型,然后自动创建对应实例并指定对应 Action 方法...这个模拟中间件具有与 StaticFileMiddleware 相同功能,它能够将目标文件内容采用正确媒体类型响应给客户端,同时能够处理条件请求和区间请求。...这个模拟中间件具有与 StaticFileMiddleware 相同功能,它能够将目标文件内容采用正确媒体类型响应给客户端,同时能够处理条件请求和区间请求。...如果状态码为 404 响应是最终异常处理结果,则必须将 ExceptionHandlerOptions 配置选项 AllowStatusCode404Response 属性设置为 True。...如果状态码为 404 响应是最终异常处理结果,则必须将 ExceptionHandlerMiddleware配置选项 AllowStatusCode404Response 属性设置为 True。

1.5K20

ASP.NET Core 入门教程 4、ASP.NET Core MVC控制器入门

一、前言 1、本教程主要内容 ASP.NET Core MVC控制器简介 ASP.NET Core MVC控制器操作简介 ASP.NET Core MVC控制器操作简介返回类型简介 ASP.NET Core...MVC控制器操作简介返回类型示例 ASP.NET Core MVC控制器参数映射逻辑说明 ASP.NET Core MVC控制器参数映射/获取示例 2、本教程环境信息 软件/环境 说明 操作系统 Windows...Core MVC 控制器操作简介 1、ASP.NET Core MVC 控制器操作概述 控制器(Controller)操作(Action)就是控制器接收到请求后实际用与处理请求程序方法/函数。...HTTP请求数据(QueryString、FormData、Header等)找到执行该方法所需要参数值。...另外,Action方法也可以不定义参数,手动RouteData或HTTP请求数据(QueryString、FormData、Header等)获取对应参数值。

2.2K40

ASP.NET Core 入门教程 4、ASP.NET Core MVC控制器入门

一、前言 1、本教程主要内容 ASP.NET Core MVC控制器简介 ASP.NET Core MVC控制器操作简介 ASP.NET Core MVC控制器操作简介返回类型简介 ASP.NET Core...MVC控制器操作简介返回类型示例 ASP.NET Core MVC控制器参数映射逻辑说明 ASP.NET Core MVC控制器参数映射/获取示例 2、本教程环境信息 软件/环境 说明 操作系统 Windows...Core MVC 控制器操作简介 1、ASP.NET Core MVC 控制器操作概述 控制器(Controller)操作(Action)就是控制器接收到请求后实际用与处理请求程序方法/函数。...HTTP请求数据(QueryString、FormData、Header等)找到执行该方法所需要参数值。...另外,Action方法也可以不定义参数,手动RouteData或HTTP请求数据(QueryString、FormData、Header等)获取对应参数值。

1.9K10

自己动手写一个简单MVC框架(第二版)

ASP.NET MVC实现中,是将请求交给了MvcHandler这个类,通过执行其ProcessRequest方法来进行后续处理。 ?  ...在ASP.NET MVC中,会调用MvcHandlerProcessRequest()方法,此方法会激活具体请求Controller类对象,触发Action方法,返回ActionResult实例。...第一部分我们可以知道,ASP.NET MVC入口在于UrlRoutingModule,因此这里我们便模拟实现了一个UrlRoutingModule. /// //...在以往ASP.NET MVC开发中,我们在Action方法编写中,总会看到它们返回类型都是以ActionResult为基类各种Result类型。...③ 路由扩展者 : RouteExtend 在以往ASP.NET MVC开发中,我们会在Global全局应用处理文件中为项目注册路由规则,但却不知道其实我们常用MapRoute方法其实是一个扩展方法

1.4K20

asp.net core 系列】2 控制器与路由恩怨情仇

前言 在上一篇文章中,我们初步介绍了asp.net core,以及如何创建一个mvc项目。从这一篇开始,我将为大家展示asp.net core 各种内容,并且尝试带领大家来挖掘其中内在逻辑。...当然,那是以后事情。这一篇将通过自定义一个控制器来为大家介绍asp.net core mvc 中控制器和路由相关知识。 ? 1....路由 在第一节中,我们介绍了一下asp.net core mvc如何寻找控制器和Action,那这一节将介绍程序如何请求链接中解析出控制器和Action名称,也就是路由映射。...路由(Routing)负责匹配传入HTTP请求,然后将这些请求发送给应用可执行终结点。终结点是应用可执行请求处理代码单元,也就是我们控制器里方法(Action)。...,但是我们在访问: http://localhost:5006/DemoTest 仍然能得到响应,而且控制器被解析为Demo。

87320

详解ASP.NET Core 处理 404 Not Found

解决方案 在以前ASP.NET MVC版本中,主要在 web.config 中处理404错误。...您可能记得在 <customErrors 节点中配置ASP.NET管道处理404错误,以及在低版本IIS中通过 <httpErrors 节点处理 404错误。好像有点混乱。...当内部中间件组件返回错误代码(如404)时,UseStatusCodePagesWithReExecute允许您执行另一个控制器Action来处理状态代码。...例如,如果您正在使用上一节所示请求限制,那么您可以返回一个解释为什么请求失败429页面。 总结 处理404页面的具体问题最好用自定义视图来处理,并设置状态代码(直接或通过自定义操作结果)。...一般来说,这两种技术是在ASP.NET Core中处理非成功HTTP状态代码首选方法

1.9K20

ASP.NET MVC学习笔记02控制器和路由

上一篇大致说了下ASP.NET MVC到底是什么,以及MVC思想,下面我们就继续依照官方文档,MVCC开始入手,也就是控制器。...Controllers: 处理浏览器请求,取得数据模型,然后指定要响应浏览器请求视图模板。 控制器 这些概念说来说去似乎越绕越复杂,闲话少叙,第一个控制器开始。...ASP.NET MVC会调用不同控制器类(和其内部不同操作方法)这取决于传入URL。 所使用ASP.NET MVC默认URL路由逻辑使用这样格式来判定哪些代码以便调用。...Routing来告诉MVC如何定位到正确Controller和Action。...请注意,我们只需要浏览 /HelloWorld路径,默认情况下会调用Index方法。如果没 有明确指定操作方法,Index方法会默认被控制器类调用。

1.5K40

ASP.NET Core 错误处理(Handle Errors)

需要注意是,不要随意对Error添加[HttpGet]、[HttpPost]等限定Http请求方法特性。一旦你加上了[HttpGet],那么该方法只能处理Get请求异常。...Http错误状态码处理 默认情况下,当ASP.NET Core遇到没有正文400-599Http错误状态码时,不会为其提供页面,而是返回状态码和空响应正文。...UseStatusCodePagesWithRedirects 该扩展方法,内部实际上是通过调用UseStatusCodePages并传入lambda进行实现,该方法: 接收一个Http资源定位字符串...同样,会有一个占位符{0},用于填充Http状态码 向客户端发送Http状态码302-已找到 然后将客户端重定向到指定终结点,在该终结点中,可以针对不同错误状态码分别进行处理 app.UseStatusCodePagesWithRedirects...code=404,而且,响应状态码也变了,变成了200Ok。

2K20
领券