0

我有一个生成 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

如果我有,我有相同的 URL。重定向未完成。它必须去

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

现在用户不会得到任何错误页面,只是重新加载页面。页面重新加载不正确,因为 URL 是

http://localhost:18314/Export/ExportToWord?docId=5

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

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

4

1 回答 1

2

您可以return RedirectToAction("ErrorPage", "Home");代替抛出异常。有RedirectToAction允许传递路由值的重载(因此您可以传递错误 ID、异常类型等)。

更新

当您想使用 ELMAH 记录异常时,我建议手动记录错误并重定向到操作:

catch(Exception e)
{
    Elmah.ErrorSignal.FromCurrentContext().Raise(e);
    return RedirectToAction("ErrorPage", "Home");
}
于 2012-11-01T12:41:44.677 回答