我试图在服务的方法中捕获异常并将此异常冒泡给客户端。
我的代码是:
合同:
[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,但是在我抛出新异常的行中,我收到以下错误:usr的代码不控制异常。
EDIT1:我解决了这个问题,我必须抛出 FaultException 而不是 Exception。但是,异常不会到达客户端。这可能是什么原因?
EDIT2:好吧,我必须使用faultException,但我遇到了同样的问题,它说faultException不是由用户的代码处理的。我在所有方法中都有 try/catch,Begin、End 和辅助方法 updateUsersMethod。