我有一個自託管WebServiceHost
像這樣定義的:如何在WebServiceHost中調試序列化錯誤?
var baseWebHttpBindingBase = "http://localhost:8085/MyService");
var wsEndPoint = new EndpointAddress(baseWebHttpBindingBase);
var binding = new WebHttpBinding();
wsHost = new WebServiceHost(lsWsService, new Uri(baseWebHttpBindingBase));
wsHost.Faulted += new EventHandler(wsHost_Faulted);
wsHost.UnknownMessageReceived += new EventHandler<UnknownMessageReceivedEventArgs>(wsHost_UnknownMessageReceived);
ServiceDebugBehavior sdb = host.Description.Behaviors.Find<ServiceDebugBehavior>();
sdb.IncludeExceptionDetailInFaults = true;
// Mex endpoint
ServiceMetadataBehavior mexBehavior = new ServiceMetadataBehavior();
mexBehavior.HttpGetEnabled = true;
wsHost.Description.Behaviors.Add(mexBehavior);
wsHost.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexHttpBinding(), baseWebHttpBindingBase + "mex");
wsHost.Open();
我有一個OperationContract
定義:
[OperationContract]
[WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest, Method = "PUT", UriTemplate = "/handShake")]
public ConfigSettings handShake(ClientInformationDto clientInfo) {
var configSettings = new ConfigSettings();
// set configSettings values;
return configSettings;
}
ConfigSettings有一些雜項。屬性,主要定義爲字符串和整數。有一個屬性,雖然名爲complexClasses類型List<ComplexClass>
- 如果complexClasses爲null,那麼客戶端可以使用webservice很好。但是,如果我填充complexClasses,嘗試使用webservice永遠不會完成 - 在Fiddler中觀看它只顯示一個通用的ReadResponse() failed: The server did not return a response for this request.
當我調試代碼時,我得到return語句,並且當我執行最後一步時,提琴手報告以上錯誤。
我知道問題與configSettings中的我的ComplexClass有關。該服務繼續運行良好,甚至在啓用Studio的「打破所有例外」功能後,任何事情都不會中斷。無論如何調試返回後(最有可能在序列化階段)導致我的服務無法返回任何東西后發生的任何事情?
最好的辦法是在您的應用程序中啓用跟蹤(http://msdn.microsoft.com/zh-cn/library/ms733025.aspx);序列化錯誤將顯示在跟蹤文件中。 – carlosfigueira