Для этой ошибки объекта не определен конструктор без параметров - PullRequest
0 голосов
/ 27 января 2011

Внезапно я получаю эту ошибку в моих службах wcf:

ExceptionDetail, вероятно созданный IncludeExceptionDetailInFaults = true, значение которого:

System.InvalidOperationException: An exception was thrown in a call to a WSDL export extension:
System.ServiceModel.Description.DataContractSerializerOperationBehavior contract:
http://tempuri.org/:IListingService ----> System.MissingMethodException: No parameterless constructor defined
for this object.
at
System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) at
System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache) at
System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) at
System.Activator.CreateInstance(Type type, Boolean nonPublic) at
System.Runtime.Serialization.SchemaExporter.InvokeGetSchemaMethod(Type clrType, XmlSchemaSet schemas, XmlQualifiedName stableName) at
System.Runtime.Serialization.SchemaExporter.ExportXmlDataContract(XmlDataContract dataContract) at
System.Runtime.Serialization.SchemaExporter.Export() at
System.Runtime.Serialization.XsdDataContractExporter.Export(Type type)

У меня есть открытые конструкторы без параметров в каждом классе, и это все еще дает мне эту ошибку. Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 11 марта 2014

У меня была та же проблема с немного другим решением.

(Очевидно, это старый пост, но для тех, кто нашел этот вопрос, как я, и оригинальный ответ не помог ...)

Я думаю, что вполне разумно сказать, что каждый объект, на который ссылаются ваши сигнатуры интерфейса, должен быть помечен как сериализуемый. Иногда в простых проектах мы не думаем об этом, потому что многие (или большинство?) Нативных объектов .NET, с которыми мы играем, уже имеют эту возможность. Например, «ObjId as Guid» не вызовет проблем в подписи для члена, реализующего интерфейс.

Проблема, с которой я столкнулся, заключалась в том, что у меня было несколько пользовательских объектов ("Class1, Class2 и т. Д.) В качестве свойств объекта, на который фактически ссылалась моя подпись. У этого объекта (скажем, MyMainClass) был установлен атрибут, но мой объекты пользовательских свойств этого не сделали. Как только я добавил атрибут в эти классы, показанная выше ошибка исчезла.

0 голосов
/ 25 апреля 2011

Нашел проблему, я использовал OId для типа свойства (стороннего типа из MongoDB), у которого не было конструктора по умолчанию.Изменил это на int, и он начал работать.Странно то, что свойство OId работало в течение нескольких недель, интересно, что изменилось ...

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