System.ArgumentException: пустая строка '' не является допустимым локальным именем - PullRequest
0 голосов
/ 28 декабря 2018

Я использую веб-сервис, который я использовал и автоматически сгенерировал код в Visual Studio.

Служба такая: https://www.onvif.org/onvif/ver10/events/wsdl/event-vs.wsdl

Эта часть кода работает FINE и, как и ожидалось, в Windows 10, но при запуске того же EXE-файла в Mono 5.18.0.225 в Ubuntu возникает следующее исключение.

Я могу успешно подключиться к своему SOAP-серверу (камера IP CCTV), и многие команды работают успешно.Однако, когда я пытаюсь подписаться на события, я получаю сообщение об ошибке:

Unhandled Exception:
System.InvalidOperationException: There was an error generating the XML document. ---> System.ArgumentException: The empty string '' is not a valid local name.

Третья строка в этой функции, кажется, там, где возникает ошибка, но я не могу отладить дальше и посмотреть, что на самом делевнутренний код работает (как я полагаю, это внутренний код .NET).

public Onvif.OnvifEventServiceReference.SubscribeResponse 
  Subscribe(Onvif.OnvifEventServiceReference.Subscribe Subscribe1) {
  Onvif.OnvifEventServiceReference.SubscribeRequest inValue = new  
  Onvif.OnvifEventServiceReference.SubscribeRequest();
  inValue.Subscribe = Subscribe1;
  Onvif.OnvifEventServiceReference.SubscribeResponse1 retVal = ((Onvif.OnvifEventServiceReference.NotificationProducer)(this)).Subscribe(inValue);
    return retVal.SubscribeResponse;
}

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

Unhandled Exception:
System.InvalidOperationException: There was an error generating the XML document. ---> System.ArgumentException: The empty string '' is not a valid local name.
  at System.Xml.XmlWellFormedWriter.WriteStartElement (System.String prefix, System.String localName, System.String ns) [0x00146] in <2388e378a5cd4e65bc514c9bf93520a5>:0 
  at System.Xml.XmlDictionaryWriter+XmlWrappedWriter.WriteStartElement (System.String prefix, System.String localName, System.String namespaceUri) [0x00000] in <41eb8dec95f040e1b682e5e0332b385c>:0 
  at System.Xml.Serialization.XmlSerializationWriter.WriteStartElement (System.String name, System.String ns, System.Object o, System.Boolean writePrefixed, System.Xml.Serialization.XmlSerializerNamespaces xmlns) [0x00163] in <2388e378a5cd4e65bc514c9bf93520a5>:0 
  at System.Xml.Serialization.XmlSerializationWriter.WriteStartElement (System.String name, System.String ns, System.Object o, System.Boolean writePrefixed) [0x00000] in <2388e378a5cd4e65bc514c9bf93520a5>:0 
  at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write9_Item (System.Object[] p) [0x00010] in <9ab12e2c4426454c93cd13f209eb743f>:0 
  at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer.Serialize (System.Object objectToSerialize, System.Xml.Serialization.XmlSerializationWriter writer) [0x00000] in <9ab12e2c4426454c93cd13f209eb743f>:0 
  at System.Xml.Serialization.XmlSerializer.Serialize (System.Xml.XmlWriter xmlWriter, System.Object o, System.Xml.Serialization.XmlSerializerNamespaces namespaces, System.String encodingStyle, System.String id) [0x0007d] in <2388e378a5cd4e65bc514c9bf93520a5>:0 
   --- End of inner exception stack trace ---
  at (wrapper managed-to-native) System.Object.__icall_wrapper_mono_remoting_wrapper(intptr,intptr)
  at (wrapper remoting-invoke) Onvif.OnvifEventServiceReference.NotificationProducer.Subscribe(Onvif.OnvifEventServiceReference.SubscribeRequest)
  at Onvif.OnvifEventServiceReference.NotificationProducerClient.Onvif.OnvifEventServiceReference.NotificationProducer.Subscribe (Onvif.OnvifEventServiceReference.SubscribeRequest request) [0x00007] in <53625273723a41699e0b65b8c3c620fe>:0 
  at Onvif.OnvifEventServiceReference.NotificationProducerClient.Subscribe (Onvif.OnvifEventServiceReference.Subscribe Subscribe1) [0x0000e] in <53625273723a41699e0b65b8c3c620fe>:0 
  at Onvif.OnvifEvents.Subscribe (System.String uri, System.Double deviceTimeOffset, System.String username, System.String password) [0x000a5] in <53625273723a41699e0b65b8c3c620fe>:0 
  at Onvif.MonitoringThread.Connect (System.String ip, System.Int32 port) [0x0027c] in <53625273723a41699e0b65b8c3c620fe>:0 
  at Onvif.Program.Main (System.String[] args) [0x0000c] in <53625273723a41699e0b65b8c3c620fe>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.InvalidOperationException: There was an error generating the XML document. ---> System.ArgumentException: The empty string '' is not a valid local name.
  at System.Xml.XmlWellFormedWriter.WriteStartElement (System.String prefix, System.String localName, System.String ns) [0x00146] in <2388e378a5cd4e65bc514c9bf93520a5>:0 
  at System.Xml.XmlDictionaryWriter+XmlWrappedWriter.WriteStartElement (System.String prefix, System.String localName, System.String namespaceUri) [0x00000] in <41eb8dec95f040e1b682e5e0332b385c>:0 
  at System.Xml.Serialization.XmlSerializationWriter.WriteStartElement (System.String name, System.String ns, System.Object o, System.Boolean writePrefixed, System.Xml.Serialization.XmlSerializerNamespaces xmlns) [0x00163] in <2388e378a5cd4e65bc514c9bf93520a5>:0 
  at System.Xml.Serialization.XmlSerializationWriter.WriteStartElement (System.String name, System.String ns, System.Object o, System.Boolean writePrefixed) [0x00000] in <2388e378a5cd4e65bc514c9bf93520a5>:0 
  at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write9_Item (System.Object[] p) [0x00010] in <9ab12e2c4426454c93cd13f209eb743f>:0 
  at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer.Serialize (System.Object objectToSerialize, System.Xml.Serialization.XmlSerializationWriter writer) [0x00000] in <9ab12e2c4426454c93cd13f209eb743f>:0 
  at System.Xml.Serialization.XmlSerializer.Serialize (System.Xml.XmlWriter xmlWriter, System.Object o, System.Xml.Serialization.XmlSerializerNamespaces namespaces, System.String encodingStyle, System.String id) [0x0007d] in <2388e378a5cd4e65bc514c9bf93520a5>:0 
   --- End of inner exception stack trace ---
  at (wrapper managed-to-native) System.Object.__icall_wrapper_mono_remoting_wrapper(intptr,intptr)
  at (wrapper remoting-invoke) Onvif.OnvifEventServiceReference.NotificationProducer.Subscribe(Onvif.OnvifEventServiceReference.SubscribeRequest)
  at Onvif.OnvifEventServiceReference.NotificationProducerClient.Onvif.OnvifEventServiceReference.NotificationProducer.Subscribe (Onvif.OnvifEventServiceReference.SubscribeRequest request) [0x00007] in <53625273723a41699e0b65b8c3c620fe>:0 
  at Onvif.OnvifEventServiceReference.NotificationProducerClient.Subscribe (Onvif.OnvifEventServiceReference.Subscribe Subscribe1) [0x0000e] in <53625273723a41699e0b65b8c3c620fe>:0 
  at Onvif.OnvifEvents.Subscribe (System.String uri, System.Double deviceTimeOffset, System.String username, System.String password) [0x000a5] in <53625273723a41699e0b65b8c3c620fe>:0 
  at Onvif.MonitoringThread.Connect (System.String ip, System.Int32 port) [0x0027c] in <53625273723a41699e0b65b8c3c620fe>:0 
  at Onvif.Program.Main (System.String[] args) [0x0000c] in <53625273723a41699e0b65b8c3c620fe>:0 

Я ищу некоторые предложения о том, где отлаживать - похоже, что это функция Xml WriteStartElement, которая выдает ошибку - возможно, переменная localname передается неправильно.Но я не могу увидеть это, даже если я перешагну, потому что это весь внутренний код WCF.

Любые указатели приветствуются.

...