0

おそらく質問のタイトルから、私がWCFを初めて使用することがわかります。この Web サービスを実装しましたが、メソッドの 1 つがカスタムの FaultException をスローします。

namespace Feed
{
    [ServiceContract]
    public interface IMyClass
    {
        [OperationContract]
        [FaultContract(typeof(CustomError))]
        DataSet MyMethod(int A, int T);
    }
    [DataContract]
    public class CustomError
    {
        public CustomError(string msg, int code, int id)
        {
            Id = id;
            ErrorMessage = msg;
            ErrorCode = code;
        }
        [DataMember]
        [DataMember]
        public string ErrorMessage
        {
            get;
            set;
        }

        [DataMember]
        public int ErrorCode
        {
            get;
            set;
        }

        [DataMember]
        public int Id
        {
            get;
            set;
        }
    }
}

次に、MyMethod の実装で適切な例外をスローします。

namespace Feeds
{
    public class MyClass : IMyClass
    {
        DataSet MyMethod(int A, int T)
        {
            try
            {
                //todo
                DataSet ds = new DataSet();
                return ds;
            }
            catch (Exception ex)
            {
                throw new FaultException<CustomError>(new CustomError("a", 1, 0));
            }
        }
    }
}

ここまでは順調ですね。ここで、この Web サービスを使用する単純な ASP.NET Web サイトを作成しました。その Web サイトに MyClass.svc Web サービスの WebReference を追加しました。問題は、例外をキャッチしようとしているときに、catch(FaultException ex) { } CustomError を認識できないことです。次のトラブルシューティングを行いました: 1. wsdl が更新されていることを確認します (何度も実行し、他のことを変更しようとしましたが、すべてがクライアント側に反映されています) 2. BasicHttpBinding と wsHttpBinding を試しました (それが違いを生むかどうかはわかりません) 3. Google でよく検索し、MSDN のサンプル コードに忠実に従っています。

まだ運がない!何か不足していますか?どんな提案でも大歓迎です。

4

2 に答える 2

0
[FaultContract(typeof(CustomError))]

MyMethod();
于 2014-12-22T23:45:14.080 に答える