私はブール関数を備えたsoapインターフェースを持っています。この関数は、すべてが成功した場合はtrueを返し、問題が発生した場合はfalseを返すことになっています。
ブール関数でfalse+エラーメッセージを返すことはどのように可能ですか?
私はブール関数を備えたsoapインターフェースを持っています。この関数は、すべてが成功した場合はtrueを返し、問題が発生した場合はfalseを返すことになっています。
ブール関数でfalse+エラーメッセージを返すことはどのように可能ですか?
インターフェイスはbool結果のみを返すことを前提としているため、追加の文字列を返すことはできません。
自分のケースに適している場合は、を返すだけでなく、サーバー側で指定されたメッセージを使用して例外を生成できますfalse
。
その場合、SOAP障害はサーバーから応答として返されます。SOAP障害に例外メッセージが含まれています。したがって、クライアントは要求がエラーで処理されていることを認識しており、クライアントはエラーメッセージを読み取ることができます。
これが標準の動作です。
詳細については、こちらをご覧ください。
あなたの質問への直接の答えとして:もちろん、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パラメーターが含まれるのはなぜですか?」を参照してください。。