WCF:如何使用异步方法将异常从服务冒充到客户端

时间:2012-05-10 07:52:33

标签: wcf asynchronous exception-handling

我试图在服务方法中捕获异常,并将此异常传递给客户端。

我的代码是:

合同:

[OperationContract(AsyncPattern = true)]
[FaultContractAttribute(typeof(Exception))]
IAsyncResult BeginUpdateUsers(List<Users> paramUsers, AsyncCallback callback, object state);
List<Users> EndUpdateUsers(IAsyncResult result);

实施接口

public IAsyncResult BeginUpdateUsers(List<Users> paramUsers, AsyncCallback callback, object state)
{
    Task<List<Users>> task= Task<List<Users>>.Factory.StartNew(p => aupdateUsersMethod(paramUsers), state);
    return task.ContinueWith(res => callback(task));
}


public List<Users> EndUpdateUsers(IAsyncResult result)
{
    try
    {
        return ((Task<List<Users>>)result).Result;
    }

    catch (Exception ex)
    {
        throw new Exception(ex.Message);
    }
}

private updateUsersMethod(List<Users> paramUsers)
{
    try
    {
    }
    catch(Exception ex)
    {
          throw new Exception(ex.Message);
     }
}

我在方法updateUsersMethod的catch中遇到运行时错误。它进入catch,但是当我抛出新的Exception时,我得到以下错误:usr的代码不控制异常。

EDIT1:我解决了这个问题,我必须抛出FaultException而不是Exception。但是,异常不会到达客户端。这可能是原因?

EDIT2:嗯,我必须使用faultException,但我遇到了同样的问题,它告诉我,用户的代码无法处理faultException。我在所有方法中尝试/ catch,Begin,End和辅助方法updateUsersMethod。

0 个答案:

没有答案