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

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

问题描述:

我使用EF + WCF ria服务来回应用程序。这是我的情况:如何从数据库中提取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); 

本地运行应用程序时,一切都很好,我可以得到所产生的错误信息通过SP像:
提交操作失败:我的测试消息

但是,当我将应用程序部署到另一台计算机,我不能错误消息,错误消息是这样的:
提交操作失败:类型'System.ServiceModel.DomainServices.Client.DomainOperationException'的异常被抛出。

看起来像是与Web服务器(IIS)相关的东西。如何解决这个问题?

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