事件驱动的异步WCF服务调用中的异常处理

时间:2015-01-08 13:15:44

标签: c# .net wcf exception-handling windows-phone-8.1

问题涉及使用WCF服务连接到数据库并从中检索信息的Windows Phone 8.1 SL应用程序。我们如何处理数据库的通信错误异常?假设该服务已打开,我们可以访问它,但由于某种原因,该服务无法访问该数据库。这种错误处理是否应该在WCF一侧?如果是,那么如何将其写入用户的友好显示信息,如messagebox?

第二件事:我决定自己模拟无法访问WCF服务。为实现这一目标,我刚刚将IP地址更改为服务。我想从应用程序端处理此异常,但我总是在Visual Studio中得到错误异常。有没有建议错误类负责处理与服务的通信错误?

我正在尝试这样的事情:

public partial class Kurs : PhoneApplicationPage
{
    CenyMiejscaService.CenyMiejscaServiceClient cenyMiejscaUsluga;
    Dictionary<DateTime, double> kurs;


    public Kurs()
    {
        InitializeComponent();

        kurs = new Dictionary<DateTime, double>();

        try
        {
            cenyMiejscaUsluga = new CenyMiejscaService.CenyMiejscaServiceClient();
            cenyMiejscaUsluga.PobierzKursRublaCompleted += cenyMiejscaUsluga_PobierzKursRublaCompleted;

            cenyMiejscaUsluga.PobierzKursRublaAsync();
        }
        catch(CommunicationException ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
}

但我只收到Visual Studio抛出的异常: enter image description here

1 个答案:

答案 0 :(得分:2)

假设错误处理在WCF服务中。你能对错误做些什么?几乎没有,因为数据库已关闭,你无法纠正它。 WCF服务应该做的就是将错误转发给客户端。然后,客户端可以解释错误并显示消息。

处理可以实际执行某些操作的错误。

我不清楚第二个问题。看起来你只需要抓住结果CommunicationException。也许InnerException包含一些有用的东西。如果没有,你可以做的不多。 .NET中的异常层次结构存在严重缺陷,因为它通常不允许您区分不同的错误。