2016-06-08 2 views
0

Это уже беспокоило меня какое-то время, и я не понимаю, как его решить.Ошибки сериализации XML в Windows Server 2012 R2 IIS, но не в Windows 10 IIS

Я разрабатываю приложение с использованием ASP MVC 5, и совсем недавно я начал работать над производственной средой. Программа строит и работает на моем локальном компьютере с Visual Studio с помощью IIS express.

Я также установил сервер IIS на свой локальный компьютер (Windows 10) и опубликовал его, что также отлично работает.

Проблема, похоже, возникает, когда Windows Server входит в уравнение.

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

System.InvalidOperationException: There is an error in XML document (1, 999). ---> System.InvalidCastException: Cannot assign object of type EpagesSOAPClients.CustomerService4Ref.TLocalizedValue[] to an object of type EpagesSOAPClients.ProductService9Ref.TLocalizedValue[]. 
    at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read14_TGetInfo_Return() 
    at System.Xml.Serialization.XmlSerializationReader.ReadReferencingElement(String name, String ns, Boolean elementCanBeType, String& fixupReference) 
    at System.Xml.Serialization.XmlSerializationReader.ReadArray(String typeName, String typeNs) 
    at System.Xml.Serialization.XmlSerializationReader.ReadReferencingElement(String name, String ns, Boolean elementCanBeType, String& fixupReference) 
    at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read100_getInfoResponse() 
    at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer21.Deserialize(XmlSerializationReader reader) 
    at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events) 
    --- End of inner exception stack trace --- 

Я видел еще один пост на SO предположить, что, возможно, это было связано окна обновления, так что я дошел до установки свежей Windows Server 2012 R2 на новую виртуальную машину и пытается запустить на сайте перед выполнением любых обновлений Windows, но безрезультатно. Я также медленно применял обновления и повторил их до тех пор, пока все обновления не были выполнены, и все же я столкнулся с проблемой.

Из сообщения об ошибке видно, что я использую веб-службу SOAP, которая имеет свои определенные типы в каждой службе. Каждая услуга также имеет тип TLocalizedValue[], и из-за ошибки она выглядит смешанной между ошибками ProductService и CustomerService. В попытке исправить это я пошел и явным образом набрал все поля TLocalizedValue[] в сервисах своим соответствующим ServiceRefName.TLocalizedValue[], но это тоже было бесполезно.

Мне осталось поверить, что на Windows Server есть что-то напуганное с библиотекой System.XML, но я не понимаю, что. Я не думаю, что я понимаю это достаточно, чтобы развернуть проблему и исправить ее.

Любое руководство очень ценится, Шон.

EDIT:

Не уверен, если это поможет, но вот декларация TLocalizedValue в ProductService ссылке:

/// <remarks/> 
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.6.1064.2")] 
    [System.SerializableAttribute()] 
    [System.Diagnostics.DebuggerStepThroughAttribute()] 
    [System.ComponentModel.DesignerCategoryAttribute("code")] 
    [System.Xml.Serialization.SoapTypeAttribute(Namespace="urn://epages.de/WebService/EpagesTypes/2005/01")] 
    public partial class TLocalizedValue { 

     private string languageCodeField; 

     private string valueField; 

     /// <remarks/> 
     public string LanguageCode { 
      get { 
       return this.languageCodeField; 
      } 
      set { 
       this.languageCodeField = value; 
      } 
     } 

     /// <remarks/> 
     public string Value { 
      get { 
       return this.valueField; 
      } 
      set { 
       this.valueField = value; 
      } 
     } 
    } 

После некоторого дальнейшего тестирования, то получается, что CustomerService работает, но никто других. Все они, похоже, путают свою декларацию TLocalizedValue как принадлежащую CustomerServiceRef, как и вышеприведенную ошибку.

+0

У вас есть вопрос массива. Сериализация по умолчанию для массивов предполагает наличие двух уровней массива, таких как ........Добавление объявления [XmlElement ("Name")] исключает тег . – jdweng

+0

@jdweng Я не уверен, что я следую, где вы видите проблему с массивом? –

+0

За исключением: Нельзя назначить объект типа EpagesSOAPClients.CustomerService4Ref.TLocalizedValue []. Не могу дать ответ, не видя xml и больше вашего кода. – jdweng

ответ

0

Предоставлено этого SO поста, я нашел свой ответ: Switching to Release Build causes runtime error in Web Reference

Как-то где-то, мой вариант «Создать сериализации Ассамблеи» во всех конфигов, но «Debug» были установлены на «Авто». Установлено значение «Выкл.». Я не могу поверить, что он взял меня так долго, чтобы найти один маленький выпадающий список в сборки конфигурации ...

enter image description here

Смежные вопросы