如何从数据库中获取wcf ria服务的错误?

时间:2012-03-15 13:09:55

标签: entity-framework silverlight-4.0 wcf-ria-services

我在SL app上使用EF + WCF ria服务。这是我的情况:

表更新映射到EF中的SP。在这个SP中,我使用RAISERROR('我的测试消息',11,1)来产生一些异常的错误消息。

然后通过覆盖SaveChanges:

捕获此错误
  public override int SaveChanges(System.Data.Objects.SaveOptions options)
        {            
            try
            {
                return base.SaveChanges(options);
            }
            catch (Exception ex)
            {
                 throw ex;
            }
        }

在客户端,将异常处理为:

Context.SubmitChanges(s =>
{
   try
     {
       if (s.HasError)
         {
            //......
           errs = s.Error.Message;
         }
      //....
      }
      catch (Exception ex)
      {
         //....
         errs = s.Error.Message;
      }                   
}, null);

在本地运行app时,一切都很好,我可以得到SP产生的错误信息,如:
提交操作失败:我的测试消息

但是当我将应用程序部署到另一台计算机时,我无法收到错误消息,错误消息如下:
提交操作失败:抛出了类型'System.ServiceModel.DomainServices.Client.DomainOperationException'的异常。

看起来与Web Server(IIS)相关的东西。如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

检查web.config中的CustomErrors设置。此外,如果在域服务中覆盖OnError,则可以设置断点以查看域异常的“内部”,并添加客户端可以解释的错误代码(我发现这很有帮助)。