サービスのメソッドで例外をキャッチし、この例外をクライアントにバブルさせようとしています。
私のコードは次のとおりです。
契約する:
[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 のキャッチで実行時にエラーが発生します。それはキャッチに入りますが、新しい例外をスローする行で、次のエラーが発生します。ユーザーのコードは例外を制御しません。
EDIT1: 問題を解決しました。例外の代わりに FaultException をスローする必要があります。ただし、例外はクライアントに届きません。どれが理由でしょうか?
EDIT2:まあ、私は faultException を使用する必要がありますが、私は同じ問題を抱えています。faultException はユーザーのコードによって処理されないと言われています。すべてのメソッド、Begin、End、および補助メソッド updateUsersMethod に try/catch があります。