3

asmx サービスと、soap 例外をスローする 1 つのメソッドがあります。問題は、例外が発生すると、次の障害文字列が表示されることです。

<faultstring>System.Web.Services.Protocols.SoapException: Error occurred at CustomServices.Application.TestService.ThrowSoapException(XmlNode ErrorNode) at CustomServices.Application.TestService.MyMethod(String param1, String param2, String param3)</faultstring> 

しかし、私が欲しいのは、SoapException コンストラクター「エラーが発生しました」に渡す文字列だけです。このようなもの

<faultstring>Fault occurred</faultstring> 

現在機能する 1 つのオプションは、カスタム エラー モードをオンに設定することで、短いメッセージのみが表示されますが、変更するのではなく、コード自体でそれを実行して防止する他の方法があるかどうかを知りたい設定ファイルのカスタムモード。以下は、石鹸の例外をスローする私のコードです

 public void WebServiceExceptionHandler(XmlNode node)
    {
        System.Xml.XmlDocument Xmldoc;
        System.Xml.XmlNode xmlNode;
        try
        {
            Xmldoc = new System.Xml.XmlDocument();
            xmlNode= doc.CreateNode(XmlNodeType.Element, SoapException.DetailElementName.Name, SoapException.DetailElementName.Namespace);

          //my detaild error node to be displayed.
            XmlNode errorNode= Xmldoc.ImportNode(node, true);
            xmlNode.AppendChild(errorNode);
            //Throw the exception.    
            SoapException se = new SoapException("Error Occurred", SoapException.ServerFaultCode, Context.Request.Url.AbsoluteUri, xmlNode);
            throw se;
        }   

スタック トレース情報を追加する代わりに、faultstring を送信したエラーだけに制限できるものは何も表示されません。誰かがこれで私を助けてくれませんか。エラーメッセージとフォルトコードだけを渡すようにsoapExceptionクラスのコンストラクタを変更しようとしましたが、それは役に立たないようです。

4

1 に答える 1