0

IRequestChannelを使用してチャネルを介して生のWCFメッセージを送信するwcfベースのシステムがあります。サービスコントラクトは事前にわかっていませんが、フォールトコントラクトはわかっているので、フォールトメッセージがあるたびに、FaultExceptionタイプにマップする必要があります。

また、DCSは非常に扱いにくいため、シリアライザーにはXmlSerializerを使用しています。

たとえば、以下

 var requestChannel = this.GetRequestChannel();
 using (requestChannel as IDisposable)
 {
       responseMessage = requestChannel.Request(requestMessage);
  }
  if (responseMessage.IsFault)
  {
        throw new ApplicationException("Fault");                
  }

メッセージから一般的な障害例外インスタンスを作成する方法はありますか?

4

1 に答える 1

0

フォルト コントラクトを WCF 操作コントラクトに追加します。

[ServiceContract()]
public interface IService
{
    [OperationContract]
    [FaultContract(typeof(MyFaultException))]
    string GetMessage();
}

次に、エラーが発生したときにフォルト例外をスローします。

MyFaultException theFault = new MyFaultException();
heFault.Reason = "Some Error Message";
throw new FaultException<MyFaultException>(theFault);
于 2012-12-11T15:42:42.863 に答える