在ActionResult方法中抛出异常

时间:2013-12-13 15:59:48

标签: c# asp.net-mvc web-services exception soap

我有一个上传控制器的视图,它触发了这个ActionResult:

    [HttpPost]
    public ActionResult ProcessSubmitUpload(HttpPostedFileBase attachments, Guid? idDocument)
    {
          //Validations
          var xmlDocument = XDocument.Load(attachments.InputStream);
          DocumentCommonHelper.SendFile(xmlDocument);
    }

SendFile方法:

  public static void SendCte(XDocument xmlDocument)
  {
       var client = new WsSoapClient();
       client.InsertXML(xmlDocument);
  }

如果somethig出错,webservice会返回SoapException,例如: “IDDocument不存在”等等。

但是在MVC中我调试如果在InsertXml方法中出现问题我无法捕获它,调试导航就停止并抛出上传文件错误。

我想在我的操作中捕获InsertXML方法的返回消息,并将其返回到我的视图中。就像一个'警报'弹出窗口。 我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

您可以将错误消息返回到ModelState对象中的视图。视图可以使用ValidationSummary助手显示它:

[HttpPost]
public ActionResult ProcessSubmitUpload(HttpPostedFileBase attachments, Guid? idDocument)
{
      //Validations
      var xmlDocument = XDocument.Load(attachments.InputStream);
      try
      {
          DocumentCommonHelper.SendFile(xmlDocument);
      }
      catch(Exception ex)
      {
          ModelState.AddModelError("ProcessSubmitUpload", ex.Message);
          return View(new MyViewModel())
      }
}

查看:

@using(Html.BeginForm("ProcessSubmitUpload", "MyController", FormMethod.Post))
{
    @Html.ValidationSummary()
    ... etc.
}

答案 1 :(得分:2)

您可以使用SendFile块包裹try..catch方法调用,并使用catch部分填充返回结果以及有关错误的相应信息。