如何通过重定向到MVC中的用户友好错误页面来创建异常

时间:2012-11-01 12:40:04

标签: c# asp.net-mvc exception controller elmah

我有一个生成Word文档的MVC操作:

    [HttpGet]
    public ActionResult ExportToWord(string docId)
    {
    try
    {
      //...
      //Word-document generating is done here...
      //...
      return File(stream, MIMEAssistant.GetMIMEType("docx"), fileName + ".docx");
    }
    catch (Exception e)
    {
        throw new Exception("Problem with generating! " + e.ToString());
    }

如果有的话,我会使用URL

获取Asp.Net标准例外
http://localhost:18314/Export/ExportToWord?docId=5

如果我有,我有相同的网址。重定向没有完成。它必须去

http://localhost:18314/Home/ErrorPage.

现在用户没有得到任何错误页面,只是重新加载页面。由于URL为

,因此页面重新加载不正确
http://localhost:18314/Export/ExportToWord?docId=5

我希望这是可以理解的描述:)

问题:如何正确重定向到... / Home / ErrorPage并使用Elmah日志记录工具发送异常?

1 个答案:

答案 0 :(得分:2)

你可以return RedirectToAction("ErrorPage", "Home");而不是抛出异常。有RedirectToAction个重载允许传递路由值(因此您可以传递错误ID,异常类型等)。

<强>更新

由于您希望使用ELMAH记录异常,我建议手动记录错误并重定向到以下操作:

catch(Exception e)
{
    Elmah.ErrorSignal.FromCurrentContext().Raise(e);
    return RedirectToAction("ErrorPage", "Home");
}