当我问这个问题时,我主要考虑的是糟糕的参数。下列参数:
int <= 0string为空或空白下面是我讨论的两种错误处理方案:
public ActionResult GoToError(int value, string name)
{
if (value <= 0 || string.IsNullOrWhiteSpace(name))
{
// Parameter(s) not meeting basic conditions
TempData["ErrorMessage"] = "Invalid parameters";
return RedirectToAction("Index", "Error");
}
return View();
}
public ActionResult ReturnView(int value, string name)
{
if (value <= 0 || string.IsNullOrWhiteSpace(name))
{
// Parameter(s) not meeting basic conditions
ViewData["ErrorMessage"] = "Invalid parameters";
return View("Error");
}
return View();
}发布于 2011-11-18 18:39:26
有不同的场景,需要进行不同的处理:
根据你发布的信息,我无法将它们归类为“预期”或“未预期”。主要问题是,,这些调用的客户端期望如何处理它们?
发布于 2011-11-18 18:27:11
在RESTFul应用程序中,您应该返回视图并设置相应的HTTP状态代码(401、403、404、500、.)。当您重定向时,这意味着状态代码200和返回错误页的状态代码200没有意义。下面是我用来处理错误的技术。当您可以订阅不同的状态代码时,AJAX也能很好地工作。例如,假设您有一个经过身份验证的站点,登录用户可以在其中执行AJAX请求。在某些不活动之后,它们的会话可能过期,当它们需要执行一些AJAX请求时,如果服务器不返回正确的状态代码(在本例中为401),客户端脚本将很难理解和处理该场景。
发布于 2011-11-18 18:31:24
在ASP.NET中正确地做错误只不过是一场噩梦--非常困难。
如果你遵循网络的本意:
如果无法从错误中恢复,您应该返回错误结果,如400次错误请求、404资源未找到等。这包括4xx范围内的大部分错误。
对于将导致500错误的未处理异常的应用程序错误,正确的解决方案是发出302重定向到正确返回500状态代码的错误页。
正如@Darin所说,在RESTful应用程序中,您永远不应该对任何应该始终返回结果的东西发出重定向。
https://stackoverflow.com/questions/8186955
复制相似问题