[英]error Status: 'Internal Server Error'. Error Code: 500 - jqGrid ASP.NET MVC
[英]Why ASP.NET MVC sometimes returns error status code 500 and sometimes error status code 404
我正在尝试在ASP.NET MVC 5中实现自定义错误页面。如果输入无效的URL,则自定义错误页面通常会显示我的自定义404找不到页面,并且正确的响应为“ 404 not found”,但是在在某些情况下,它会以我的自定义500内部服务器错误页面作为响应,并带有响应“ 500内部服务器错误”?
例如,我具有以下路由配置:
routes.MapRoute(
null,
"Category/{category}",
new { controller = "Post", action = "Category" }
);
现在,如果我尝试导航到以下不存在的页面,它将响应404 not found错误,这是正确的。
justatestsite.com/Category/noexists(遵循正确的路由配置,页面不存在,错误状态为404)
justatestsite.com/Category/noexists/norouteconfig(不遵循正确的路由配置,页面不存在,错误状态为404)
但是与我的其他路由配置:
routes.MapRoute(
null,
"Archive/{year}/{month}/{day}/{title}",
new { controller = "Post", action = "Detail" }
);
justatestsite.com/archive/2014/8/25/noexists(遵循正确的路由配置,页面不存在,错误状态为500)
justatestsite.com/archive/2014/8/25/noexists/norouteconfig(不遵循正确的路由配置,页面不存在,错误状态为404)
这是我的帖子详细信息控制器
public ViewResult Detail(int year, int month, int day, string title)
{
var post = repository.Detail(year, month, day, title);
if(post == null)
{
throw new HttpException(404, "Post not found");
}
if (post.Published == false && User.Identity.IsAuthenticated == false)
{
throw new HttpException(401, "The post is not published");
}
return View(post);
}
为什么有时会返回错误状态代码500 ????
找出问题所在。 我以为这与路由配置有关,但问题实际上出在我的LINQ表达式中。
我用了
.Single()
返回单个帖子,因此必须返回1个帖子,而不是0。当我转到其中没有任何帖子的url时,则为0个帖子,因此它引发了我内部服务器错误,而不是找不到错误。
我将其更改为
.SingleOrDefault()
所以期望值可以是single(1)或default(0),现在它抛出了404 not found错误,这就是我想要的。
您可以检查此博客以在ASP.NET MVC应用程序中实现自定义错误页面。 在这里,您将能够处理404找不到和500个内部服务器错误。
希望这可以帮助 :)
您收到500个内部服务器错误,因为PostController
上的Detail
动作中有问题,您PostController
的实际错误消息是什么,您的动作是什么样的?
您如何处理找不到相关帖子的事实? 我猜想您将没有任何回报可言,然后摔倒了。
您是否尝试过类似的方法:
public ActionResult Post(int year, int month, int day, string path)
{
var publishedDate = new DateTime(year, month, day);
BlogPost blog = _BlogRepository.GetBlogPost(publishedDate, path);
if (null == blog)
{
throw new HttpException(404, "Blog post not found");
}
return View(blog);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.