我在WCF服务中使用Microsoft.AspNet.Identity.UserLoginInfo类。然而,我得到以下错误-
Microsoft.AspNet.Identity类型"。UserLoginInfo'不能被序列化。考虑使用DataContractAttribute属性标记它,并且标记要序列化的所有成员DataMemberAttribute属性。如果类型是一个集合,请考虑用CollectionDataContractAttribute标记它。看到其他支持类型的Microsoft .NET Framework文档
由于该类是在microsoft . asp.net . identity库中提供的内置类,并且也标记为密封,因此我在扩展它以使其在我的WCF服务中可访问方面没有得到太多帮助。
如果有任何帮助,我将不胜感激。
谢谢
正如它所说的…你不能。"考虑用DataContractAttribute属性标记它……"是误导,因为除非你有源代码,否则你不能这样做。我假设你只是想发送一些带有几个属性的序列化对象给你的客户端。我会尝试将当前标识映射到可序列化的对象并将其发送回去。
[DataContract]
public class MyUserLoginInfo
{
[DataMember]
public string LoginProvider { get; set; }
[DataMember]
public string ProviderKey { get; set; }
}
The later on…
//Return me to client
var loginInfo = new MyUserLoginInfo { LoginProvider = myIdentity.LoginProvider, ProviderKey = myIdentity.ProviderKey };