0

サービスのメソッドで例外をキャッチし、この例外をクライアントにバブルさせようとしています。

私のコードは次のとおりです。

契約する:

[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 があります。

4

0 に答える 0