У меня вопрос о WCF.Библиотека WCF и eBay SDK
Я создал службу WCF с конечной точкой MSMQ. Эта услуга предоставляется службой Windows, и эта услуга используется приложением Asp.net. В моем приложении Asp.net используются внешние классы и перечисления, содержащие DLL (определенные eBay), которые я хотел бы использовать в своем DataContract. Я не могу изменять эти классы, я не могу добавлять атрибуты.
Мой DataContract класс как это:
[DataContract]
public class AddItemArgs
{
[DataMember]
public ItemType Item { get; set; }
}
Это ItemType класс определяется во внешней DLL.
Служба создана и скомпилирована и вызывается клиентом, но ... при сериализации моего параметра используется один из классов, определенных в DLL. Ошибка, как:
System.Runtime.Serialization.SerializationException: Тип 'System.DelegateSerializationHolder + DelegateEntry' с именем контракта данных «eBay.Service.Core.Soap.BuyerPaymentMethodCodeType: BuyerPaymentMethodCodeType: http://schemas.datacontract.org/2004/07/eBay.Service.Core.Soap ' не ожидается. Добавьте любые типы, а не , известные статически в список известных типов - например, с помощью атрибута KnownTypeAttribute или , добавив их в список известных типов , переданный DataContractSerializer.
Эта проблема ПРОВЕРЕНА, когда я передаю этот параметр (BuyerPaymentMethodCodeType). Это потому, что BuyerPaymentMethodCodeType является типом перечисления? Если я не передаю ItemType с этим полем, все будет хорошо.
Я уже пробовал это, но он не работает, даже если я выбрал ссылку Обновление службы , Из-за вашего предложения я попытался удалить ссылку и снова добавить ее обратно. Расскажу вам через несколько минут. Кажется, это работает для этого типа перечислений. Спасибо, Марко – 2009-09-08 15:39:35
ЭТО РАБОТАЕТ! Большое вам спасибо bnkdev! – 2009-09-08 16:38:23
Спасибо, если это решило проблему, возможно, согласиться с ответом, чтобы другие могли воспользоваться. Рад, что это сработало. – kd7