我试图在服务方法中捕获异常,并将此异常传递给客户端。
我的代码是:
合同:
[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。