Razor页面能否返回40X状态码?无需控制器实现问询
在Razor视图中直接返回40X状态码(无需创建Controller)
可行。你可以通过直接操作Response对象设置状态码,同时避免IIS默认错误页覆盖自定义内容,以下是具体示例:
404(页面未找到)示例
@{ Response.StatusCode = 404; Response.TrySkipIisCustomErrors = true; // 阻止IIS替换自定义错误内容 } <h1>404 - 页面未找到</h1> <p>您请求的页面不存在或已被移除。</p>
403(禁止访问)示例
@{ Response.StatusCode = 403; Response.TrySkipIisCustomErrors = true; } <h1>403 - 禁止访问</h1> <p>您没有权限访问此资源。</p>
立即终止页面渲染(可选)
如果不需要输出任何页面内容,设置状态码后可以调用Response.End()直接终止响应:
@{ Response.StatusCode = 404; Response.TrySkipIisCustomErrors = true; Response.End(); }
为什么之前的方法无效
NotFound()是Controller基类中的方法,Razor视图无法直接调用该方法。- 直接操作
Response时,需通过设置StatusCode属性指定状态码,而非调用方法,这和WebForms的操作逻辑略有区别。
内容的提问来源于stack exchange,提问作者KeithViking
相关产品推荐
相关产品推荐

