Как я могу отладить ошибку сериализации в WebServiceHost? - PullRequest
1 голос
/ 21 сентября 2011

У меня есть собственный хост 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, тогда клиент может нормально использовать веб-сервис.Однако, если я заполняю complexClasses, попытка использовать веб-сервис никогда не завершается - просмотр его в Fiddler просто показывает обобщенный ReadResponse() failed: The server did not return a response for this request.

Когда я отлаживаю код, я получаю оператор return и когда я делаюПоследний шаг, Fiddler сообщает об ошибке выше.

Я знаю, что проблема связана с моим ComplexClass в configSettings.Служба продолжает работать просто отлично, и даже после включения функции Studio «разбить на все исключения» ничего не сломается.Есть ли способ отладки того, что происходит после возврата (скорее всего, на этапе сериализации), из-за которого моя служба не может что-либо вернуть?

1 Ответ

1 голос
/ 21 сентября 2011

Возможно, ComplexClass не сериализован должным образом.ComplexClass должен быть предоставлен с атрибутами Serialization.

 [DataContract]
    public class ComplexClass
    {
        [DataMember]
        public string Field { get; set; }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...