Ошибка при использовании службы WCF в ClassLibrary - PullRequest
0 голосов
/ 15 апреля 2011

Я использую WCF в classLibrary, добавив веб-ссылку службы WCF.

Все классы обслуживания отображаются, их нет, ошибка сборки.

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

И я передаю объект в методе, который содержит XML.

Но когда я делаю прокси-класс с помощью svcutil.exe, затем вызываю метод службы с тем же объектом, имеющим тот же xml, никаких ошибок не возникает, все работает нормально.

_ ** Это означает, что в classLibrary мы можем использовать службу WCF только путем создания прокси, а не путем добавления веб-ссылки на службу WCF.

Правильно ли приведенное выше утверждение или нет?

Если нет, пожалуйста, предоставьте решение для этого. ** _

** Ошибка:

System.InvalidOperationException: There is an error in XML document (1, 528). ---> System.InvalidOperationException: Instance validation error: '' is not a valid value for PropertySubType.
   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderHotelFlow.Read29_PropertySubType(String s)
   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderHotelFlow.Read30_Hotel(Boolean isNullable, Boolean checkType)
   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderHotelFlow.Read31_SearchResult(Boolean isNullable, Boolean checkType)
   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderHotelFlow.Read100_SearchHotelsResponse()
   at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer8.Deserialize(XmlSerializationReader reader)
   at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
   --- End of inner exception stack trace ---
   at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
   at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   at ClassLibTestTouricoWCFinCsharp.com.touricoholidays.demo2.HotelFlow.SearchHotels(SearchRequest request) in C:\Documents and Settings\Prakash.singh\My Documents\Visual Studio 2005\Projects\ClassLibTestTouricoWCFinCsharp\ClassLibTestTouricoWCFinCsharp\Web References\com.touricoholidays.demo2\Reference.cs:line 132
   at ClassLibTestTouricoWCFinCsharp.Class1.test() in C:\Documents and Settings\Prakash.singh\My Documents\Visual Studio 2005\Projects\ClassLibTestTouricoWCFinCsharp\ClassLibTestTouricoWCFinCsharp\Class1.cs:line 78**

1 Ответ

1 голос
/ 15 апреля 2011

Вы в основном видите разницу между Справочником услуг и веб-справочником .Это звучит так: служба WCF, которую вы потребляете, не совместима с добавлением веб-ссылки, и вы должны вместо этого использовать ссылку на службу.используйте ChannelFactory или создайте свой собственный прокси-сервер на основе ClientBase .Вот пример использования ChannelFactory.

ChannelFactory<IContract> factory = new ChannelFactory<IContract>("BindingConfigName");
IContract channel = factory.CreateChannel();

channel.YourOperation();

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