2010-11-23 10 views
5

どのように追加するかIncludeExceptionDetailInFaults = true;以下のコードに置き換えてください。 WebサービスによってスローされたFaultExceptionの詳細を取得する必要があります。現在、私は何か詳細を戻していません。私が戻ってくるのは唯一のものだと思われる。何か案は?EndpointビヘイビアにWCF IncludeExceptionDetailInFaultsを追加する方法は?

C#コード

CustomBinding Binding = new CustomBinding(BINDING_NAME); 

EndpointAddress EndPoint = new EndpointAddress(WsEndpoint); 

// Trust all certificates 
ServicePointManager.ServerCertificateValidationCallback = ((Sender, certificate, chain, sslPolicyErrors) => true); 

_WsProxy = new MyDataSoapClient(Binding, EndPoint); 

//_WsProxy.Endpoint.Behaviors.Add(????); 

_WsProxy.ChannelFactory.Credentials.UserName.UserName = "username"; 
_WsProxy.ChannelFactory.Credentials.UserName.Password = "pwd"; 
+0

Youc an't - これはサーバー側のServiceBehaviorです。クライアントは例外の詳細を何に含めるべきですか?それはサーバー側でのみ意味があります –

+0

ExceptionFaultがスローされたときにメッセージに例外の詳細を含めるようにサーバーに指示する必要があります。要求されたときにのみExceptionDetailsを返すようにサーバー上で既に構成されています。 – Anthony

答えて

4

私はあなたがServiceDebugBehaviorを追加する必要がありますと思います。

ServiceHost host = new ServiceHost(typeof(MyService), new Uri("http://localhost:6598/")); 
host.AddServiceEndpoint(typeof(IMyService), new BasicHttpBinding(), "MyService"); 
host.Description.Behaviors.Remove(typeof(ServiceDebugBehavior)); 
host.Description.Behaviors.Add(new ServiceDebugBehavior() { IncludeExceptionDetailInFaults = true }); 
host.Open(); 
+0

投稿する前にIEndpointBehaviorを試してみました 'System.Collections.ObjectModel.Collection .Add(System.ServiceModel.Description.IEndpointBehavior)の最適オーバーロードメソッドがいくつかの無効な引数を持っています – Anthony

+0

この動作はどこで設定していますか?クライアント側では? –

+0

私はそれがBasicHttpBindingを使用しているサービスでのみ使用できると考えました。私は私のアプリでCustomBindingを使用しています。私は基本的にsvcutilを使ってwsdlから名前空間とクラスを作成しました。次に、svcutilコマンドから設定されたものに従って、CustomBindingオブジェクトと設定を使用します。任意の考え、私はまだあなたの方法を使用することはできますか? – Anthony

関連する問題