2

私は Web サービスを作成しました。クライアントはそのメソッドを呼び出します。1 つのメソッドが 4 つのパラメーターを取り、これらのいずれかが空であるかどうかを確認し、応答をクライアントに送り返したいとします。それをアラートのように送信して、クライアントがどの引数が空であるかを認識できるようにします。すべてのパラメーターを正確に指定するようにクライアントに強制することはできません。これは可能ですか?

[WebMethod]
Public void Method1(string str1,string str2,string str3,string str4)
{
    if((str1=="") || (str2==""))
    {
        //send response back to client in form of an alert
    }
}
4

3 に答える 3

3

私の知る限り、合意されたオブジェクトを送信者に送り返すことができます。送信者はそれを受信する準備ができている必要があります。「OK」または「ERROR」を含む文字列のように単純な場合もあれば、エラー コード、説明、重大度レベルなどを含む複雑な場合もあります。送信者がそれを消費するときにそれをどうするかは完全に自由です。彼らはしかし。

たとえば、応答のフィールドの 1 つを重大度レベルにすることができます(Microsoft のSeverity enumのようなものを使用する可能性があります)。送信者はこれを使用して、ユーザーにアラートを表示するか、単にエラーをログに記録するかを決定できます。彼らのシステム。

于 2012-07-07T04:42:56.540 に答える
1

Webメソッドを呼び出す人を制御することはできないとあなたは言いました。メソッドはvoid型であるため、ユーザーは何か劇的なことが起こったかどうかしかわかりません。例外をスローすると、エラーが伝播します。詳細は、WebサービスをホストしているWebサーバーとクライアントをホストしているWebサーバー(クライアントがWebページの場合)の設定によって異なります。

throw new Exception("str1 or str2 in Method1 is empty");

「最良の」場合、ユーザーには「Method1のstr1またはstr2が空です。」というエラーメッセージが表示されます。「最悪の」場合、ユーザーには標準のIIS/ASP.NETエラーページが表示されます。呼び出し元を制御するには、呼び出し元がクライアントをどのようにコーディングし、アプリケーションをどのように展開するかによって異なりますが、どのような場合でも、注意を引くことができます。

最高と最悪は人によって意味が異なるため、最高と最低を引用符で囲みます。最大限のセキュリティが必要な場合は、エラーページにエラーについて何も記載されていない場合が最適です。使いやすさと迅速なトラブルシューティングが必要な場合は、エラーメッセージに多くの詳細と次に何をすべきかが記載されている場合が最適です。

于 2012-07-07T05:11:34.257 に答える
1

カスタム オブジェクトで車輪を再発明しないでください。この MSDN の記事を見てください。

ArgumentException最も簡単な方法は、例外をスローすることです (あなたの場合は an が適切であるように聞こえます)。クライアントはSoapException.

SoapExceptionまたは、障害コードを設定する機能など、より詳細な制御が必要な場合は、自分自身をスローします.

于 2012-07-07T05:17:22.073 に答える