skc*_*in7 5 error-handling asp.net-mvc http-status-code-404
在ASP.NET MVC 3中创建自定义错误页面的最佳方法是什么?我特别感兴趣的是404错误,但也有403错误.我是MVC框架的新手,传统上我来自PHP背景,但我正在快速学习.
我在发布此问题之前做了我的研究,并发现了这个链接: asp.net MVC3上的自定义错误页面
这个解决方案看起来很简单虽然当我尝试在我的机器上实现它时,我遇到了以下问题:IController errorsController = new ErrorsController(); 在Application_Error()函数内部.它说"无法找到类型或命名空间名称'ErrorsController'(您是否缺少using指令或程序集引用?").
提前感谢您提供的帮助.
Dam*_*ian 15
你应该配置
<httpErrors>
Run Code Online (Sandbox Code Playgroud)
部分
<system.webServer>
Run Code Online (Sandbox Code Playgroud)
web.config文件中的节组.
请参考这篇文章:
http://www.iis.net/ConfigReference/system.webServer/httpErrors
此外,您可以使用您在问题中链接的错误控制器,但初始流程应由IIS管理.通过本节,您可以指示IIS应该执行由您的控制器管理的URL.
另外请注意控制器动作中正确的Response.Status属性字符串,因为建议的解决方案返回"200 OK",这可能会让浏览器感到困惑.例如
public class ErrorsController : Controller
{
public ActionResult NotFound()
{
Response.Status = "404 Not Found";
return View();
}
public ActionResult ServerError()
{
byte[] delay = new byte[1];
RandomNumberGenerator prng = new RNGCryptoServiceProvider();
prng.GetBytes(delay);
Thread.Sleep((int)delay[0]);
IDisposable disposable = prng as IDisposable;
if (disposable != null) { disposable.Dispose(); }
Response.Status = "500 Internal Server Error";
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
配置示例:
<httpErrors defaultPath="/error.htm" errorMode="Custom" existingResponse="Replace" defaultResponseMode="ExecuteURL">
<remove statusCode="500" subStatusCode="-1" />
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="500" path="/errors/servererror/" responseMode="ExecuteURL" />
<error statusCode="404" path="/errors/notfound/" responseMode="ExecuteURL" />
</httpErrors>
Run Code Online (Sandbox Code Playgroud)
您可以使用"subStatusCode"属性控制404.3和其他.
| 归档时间: |
|
| 查看次数: |
9431 次 |
| 最近记录: |