我希望我的Silverlight客戶端能夠顯示WCF調用期間發生在服務器上的異常。在WCF中發送異常的程序化配置
鑑於我目前的代碼來創建一個WCF通道(客戶端):
// create the binding elements
BinaryMessageEncodingBindingElement binaryMessageEncoding = new BinaryMessageEncodingBindingElement();
HttpTransportBindingElement httpTransport = new HttpTransportBindingElement() { MaxBufferSize = int.MaxValue, MaxReceivedMessageSize = int.MaxValue };
// add the binding elements into a Custom Binding
CustomBinding customBinding = new CustomBinding(binaryMessageEncoding, httpTransport);
// create the Endpoint URL
EndpointAddress endpointAddress = new EndpointAddress(serviceUrl);
// create an interface for the WCF service
ChannelFactory<TWcfApiEndPoint> channelFactory=new ChannelFactory<TWcfApiEndPoint>(customBinding, endpointAddress);
channelFactory.Faulted += new EventHandler(channelFactory_Faulted);
TWcfApiEndPoint client = channelFactory.CreateChannel();
return client;
當異常發生時,我只是得到一個「NOTFOUND」的例外,這顯然是沒有用的。我如何獲取異常信息?
我使用此代碼使用客戶端對象上面返回:
try
{
// customFieldsBroker is the client returned above
customFieldsBroker.BeginCreateCustomField(DataTypeID, newCustomField, (result) =>
{
var response = ((ICustomFieldsBroker)result.AsyncState).EndCreateCustomField(result);
}, customFieldsBroker);
}
catch (Exception ex)
{
// would like to handle exception here
}
在try包裝紙的開始/結束通話{}趕上{}塊似乎並不甚至跳進抓{}塊。
如果重要,我在客戶端使用Silverlight 3。
非常感謝您的幫助。這解決了它。 雖然,我很擔心web.config中設置要求: \t \t \t \t \t <添加名稱= 「silverlightFaults」 \t \t \t \t \t TYPE =「IWW.MIGTurbo2.WCF.SilverlightFaultBehavior ,IWW.MIGTurbo2.WCF,版本= 2.0.0.429文化=中性公鑰=空「/> \t \t \t behaviorExtensions> 我似乎有具有完整版本=那裏,這是我想避免,如它是動態更新的。有沒有辦法可以忽略這個版本號? –
2009-09-25 16:00:36
我_think_它將仍然綁定沒有全名的類型。如果你拿出版本會發生什麼? – alexdej 2009-09-25 19:39:10