Что может привести к тому, что свойства в .NET Service Reference станут пустыми при вызове? - PullRequest
0 голосов
/ 05 марта 2009

У меня только что был сбой ноутбука (пролилась вода). Я скопировал свой рабочий код (резервное копирование 2 дня назад) с ноутбука с Windows Server 2008 на ноутбук с ОС Vista, работающий под управлением Visual Studio 2008 SP1. Оба работают под управлением .NET 3.5 SP1.

У меня есть вызов веб-метода, который возвращает информацию о продукте.

Некоторые поля веб-службы (работающие на размещенном сервере) следующие:

public class Product
{
    [XmlAttribute("sku")]
    public string SKU;

    [XmlAttribute("name")]
    public string Name;

    [XmlAttribute("category")]
    public string CategoryName;

    [XmlAttribute("categoryKey")]
    public string CategoryKey;

    public List<ProductSectionInfo> Sections;

    public List<MediaItem> MediaItems;

    public string Foo = "bar";
}

public class MediaItem
{

    [XmlAttribute("type")]
    public string Type;

    [XmlAttribute("imageKey")]
    public string ImageKey;

    [XmlAttribute("path")]
    public string Path;

    [XmlAttribute("thumbnailPath")]
    public string ThumbnailPath;

    [XmlAttribute("thumbnailImageKey")]
    public string ThumbnailImageKey;

    [XmlAttribute("selectable")]
    public bool Selectable;
}

Когда я запускаю веб-метод 'GetProduct', свойство 'Sections' заполняется в моем клиенте C # (на новом ноутбуке), а свойство 'MediaItems '- нет. Он просто появляется как ноль в окне часов.

Так что я смотрю в Fiddler, и оба заполняются в XML. Оба являются списками, которые определены в моем прокси как стандартные [] массивы.

Возможно, вы заметили, что я добавил свойство 'Foo' выше. Я сделал это на сервере, перекомпилировал и заново создал веб-ссылку. Мне удалось проверить, что в клиенте свойство 'Foo' встречалось. Так что это не значит, что MediaItems пишется с большой буквы или что-то в этом роде.

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

Фиксированный ноутбук появится завтра, но я бы очень хотел разобраться с этим. Я довольно озадачен. Я видел много разных странных вещей, как это раньше, но действительно не вижу, что здесь происходит. Можно ли как-то отладить в прокси?

Ответы [ 2 ]

0 голосов
/ 05 марта 2009

Я знал, что это была проблема, которая, как только я изложил что-то, решалась сама собой - и, конечно, это было.

Я до сих пор понятия не имею, ПОЧЕМУ. Тот факт, что я смог добавить свойство 'Foo', регенерировать прокси, но он все еще не работал, очень странный.

  • Я добавил новое свойство MediaItems2 и назначил ему пустой MediaItem

    MediaItems2 = новый список (новый MediaItem [] {новый MediaItem ()})

  • Я сгенерировал новый прокси
  • Все работало
  • Я удалил «MediaItems2» из веб-службы
  • Я сгенерировал новый прокси
  • Это все еще работает

Все еще очень озадачен, хотя. Это первый раз, когда этот проект (ASP.NET MVC) даже запускался на этом ноутбуке.

Ну ладно, вернемся к работе ....

0 голосов
/ 05 марта 2009

Большинство проблем, возникающих у меня с частями сообщения, которые не загружаются должным образом, - это, как правило, разница между прокси и службой. Обычно либо что-то меняется / перемещается, либо даже изменяется / возникает проблема с пространством имен xml.

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