C # Устранение ошибок сериализации объекта - PullRequest
0 голосов
/ 23 ноября 2010

У меня проблемы с отправкой запроса на мыло в веб-сервис.Я создаю заказ, в том числе массив деталей заказа.Затем я отправляю этот заказ в веб-сервис.Используя Fiddler, я вижу, что заказ прошел правильно, но детали заказа не отображаются.Я получаю только:

<order><orderDetails><orderDetail /></orderDetails><order>

Я пытался изменить orderDetails с массива деталей заказа на массив строк, и они правильно отображаются в запросе.Я также получаю правильное количество в заказе.Они просто пусты.

Оба класса были сгенерированы из wsdl, поэтому я не знаю, почему orderDetail, кажется, не сериализуется должным образом.Я не знаю, как получить более подробную информацию об ошибке.Любая помощь будет принята с благодарностью.Спасибо

Из моего Reference.cs, сгенерированного из моего веб-сервиса:

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://some.url")]
public partial class order {
    private orderDetail[] orderDetailsField;

    [System.Xml.Serialization.XmlArrayAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    [System.Xml.Serialization.XmlArrayItemAttribute("orderDetails", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public orderDetail[] orderDetails {
        get {
            return this.orderDetailsField;
        }
        set {
            this.orderDetailsField = value;
        }
    }
}

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://some.url")]
public partial class orderDetail {
    private int productIDField;

[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public int productID {
        get {
            return this.productIDField;
        }
        set {
            this.productIDField = value;
        }
    }

}

1 Ответ

2 голосов
/ 23 ноября 2010

Похоже, что у сгенерированных классов есть поле 'Specified' для каждого поля.

Настройка

object.productIDSpecified=true;  

Сделано это сериализовать правильно. Надеюсь, это поможет кому-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...