0

私はブール関数を備えたsoapインターフェースを持っています。この関数は、すべてが成功した場合はtrueを返し、問題が発生した場合はfalseを返すことになっています。

ブール関数でfalse+エラーメッセージを返すことはどのように可能ですか?

4

2 に答える 2

1

インターフェイスはbool結果のみを返すことを前提としているため、追加の文字列を返すことはできません。

自分のケースに適している場合は、を返すだけでなく、サーバー側で指定されたメッセージを使用して例外を生成できますfalse

その場合、SOAP障害はサーバーから応答として返されます。SOAP障害に例外メッセージが含まれています。したがって、クライアントは要求がエラーで処理されていることを認識しており、クライアントはエラーメッセージを読み取ることができます。
これが標準の動作です。

詳細については、こちらをご覧ください。

于 2012-12-02T16:41:33.693 に答える
0

あなたの質問への直接の答えとして:もちろん、boolリターンタイプを使用するだけではありませんが、それは可能です。outメッセージをパラメータとして渡す/提供するだけです。

例えば:

 [OperationContract]
 bool MyOperation(/* ... other arguments ..., */ out string message);

@Alexander Stepaniukが言ったように、例外、つまり障害の使用を検討するか、データコントラクトをリターンタイプとして提供することを検討する必要があります。

例えば:

  [DataContract]
  public class MyResult
  {
       [DataMember]
       public bool Success { get; set; }

       [DataMember]
       public string ErrorMessage { get; set; }
  }

  [ServiceContract]
  public interface IMyContract
  {
       [OperationContract]
       MyResult MyFunction( /* ... other arguments ... */);
  }

関連する説明については、「 WCFコントラクトにref / outパラメーターが含まれるのはなぜですか?」を参照してください。

于 2012-12-02T16:50:03.710 に答える