Использование WebService из клиента CompactFramework - PullRequest
0 голосов
/ 05 января 2009

Я пытаюсь вызвать метод веб-сервиса следующим образом:

myService.Register("mystring");

Определение веб-метода просто:

[WebMethod]
public void Register(string s)
{
}

Но я получаю следующее исключение System.InvalidOperationException:

"Тип System.String не ожидался. Используйте атрибут XmlInclude или SoapInclude, чтобы указать типы, которые статически не известны."


   at System.Xml.Serialization.AccessorCollection.findAccessor(Type t)
   at System.Xml.Serialization.XmlSerializationWriter.EnqueueMember(MemberValueCollection members, LogicalMemberValue member, SerializationQueue attributes, SerializationQueue elements, Object fetcherTarget, String parentElementNamespace)
   at System.Xml.Serialization.XmlSerializationWriter.EnqueueMembers(MemberValueCollection members, SerializationQueue attributes, SerializationQueue elements, Object fetcherTarget, String parentElementNamespace)
   at System.Xml.Serialization.XmlSerializationWriter.SerializeComplexAsElement(LogicalType serializeAs, Accessor accessor, Object value, SerializationQueue delayedWork, Boolean recursiveCall, Boolean requiresTypeAttr, XmlSerializerNamespaces serializerNs)
   at System.Web.Services.Protocols.SoapMessageFormatter.SerializeComplexAsElement(LogicalType serializeAs, Accessor accessor, Object value, SerializationQueue delayedWork, Boolean recursiveCall, Boolean requiresTypeAttr, XmlSerializerNamespaces ns)
   at System.Xml.Serialization.XmlSerializationWriter.SerializeAsElement(Accessor accessor, Object value, Object fetcherTarget, SerializationQueue delayedWork, Boolean recursiveCall, Boolean schemaReqTypeAttr, XmlSerializerNamespaces serializerNs)
   at System.Xml.Serialization.XmlSerializationWriter.serializeMembers(SerializationQueue queue, SerializationQueue delayedWork, Boolean recursiveCall, Boolean schemaReqTypeAttr, XmlSerializerNamespaces serializeNs)
   at System.Web.Services.Protocols.SoapMessageFormatter.execute(String targetNamespace)
   at System.Web.Services.Protocols.SoapMessageSerializer.Serialize(XmlWriter writer, SoapHttpClientProtocol client, Object[] parameters, LogicalSoapMethod soapMethod, Boolean soap12)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.doInvoke(String methodName, Object[] parameters, WebClientAsyncResult asyncResult)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)

Google не показывает ничего полезного, и я зашел в тупик, поэтому предложения будут приветствоваться. Пока я думал только о том, что это какое-то несоответствие, потому что CF использует другую версию System.dll для проекта webservice.

1 Ответ

0 голосов
/ 05 января 2009

Это было вызвано тем, что я использовал подкласс веб-ссылки, а также использовал интерфейс, т. Е .:

public class MyWebServiceReference : RawWebServiceReference, IService {}

Интерфейс был в отдельном проекте для RawWebServiceReference и MyWebServiceReference, и некоторые аспекты этого вызывали ошибку.

...