Когда я пытаюсь получить доступ к сервису myWCF из веб-браузера в интрасети моей компании по URL-адресу ~ / MyNamespace.MyServiceClass.svc, я получаю следующее сообщение:
Тип «System.DirectoryServices.AccountManagement.PrincipalContext» не можетбыть сериализованным.Попробуйте пометить его атрибутом DataContractAttribute и пометить все его элементы, которые вы хотите сериализовать, атрибутом DataMemberAttribute.Если тип является коллекцией, попробуйте пометить его с помощью CollectionDataContractAttribute.См. Документацию Microsoft .NET Framework для других поддерживаемых типов.
MyClass реализует все заглушки [OperationContract] в моем интерфейсе, и я добавил декоратор [DataContract ()] выше, где MyClass: MyInterface, но когда я пытаюсь иУкрасив элемент PricipalContext в моем классе с помощью [DataMember], Visual Studio сообщает через intellisense, что атрибут DataMember недопустим для этого типа объявления, он действителен только для объявлений свойств, индексаторов и полей.
public PrincipalContext GetPrincipalContext()
{
PrincipalContext principalContext = new PrincipalContext(
ContextType.Domain, GetUserDomainName()
);
return principalContext;
}
https://docs.microsoft.com/en-us/dotnet/api/system.runtime.serialization.datacontractattribute?view=netframework-4.7.2
Я не уверен в некоторых вещах из документов MSDN (как выше), которые говорят, что точка атрибута DataContract: "Указывает, что тип определяет илиреализует контракт данных и сериализуется сериализатором, таким как DataContractSerializer. Чтобы сделать их тип сериализуемым, авторы типов должны определить контракт данных для своего типа. "
1.) Как я должен сделать сериализуемый ранее существующим непримативным типом класса из .NET Framework, когда я не являюсь автором указанного типа класса (System.DirectoryServices.AccountManagement.PrincipalContext)
2.) Все примеры, которые я обнаружил на MSDN, касаются этой проблемы, но содержат только примеры, реализующие пользовательские типы пользовательских классов, такие как Person ().
3.) Имеет ли System.DirectoryServices.AccountManagement.PrincipalContext должен быть сериализуемым, чтобы класс MyWCFService содержал указанный тип в качестве члена?Основной причиной создания MyWCFService является предоставление функциональности из библиотек System.DirectoryServices и System.DirectoryServices.AccountManagement в моей организации.