在创建自定义Sharepoint Web服务时,我在尝试序列化类进行传输时收到错误。
我的可序列化类没有错误。它们以我以前使用过的方式构建,并且可以在本地测试环境中成功序列化,只有在部署了Sharepoint Web服务时才会出现此问题。
System.InvalidOperationException was caught
Message=There was an error generating the XML document.
Source=System.Xml
StackTrace:
at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
at System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, Object o, XmlSerializerNamespaces namespaces)
at SPServiceExtensions.DTOSerializerHelper.SerializeDTO(SharepointDTO dto)
InnerException: System.Security.SecurityException
Message=Request failed.
Source=xo46jp-i
StackTrace:
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterSharepointDTO.Write4_SharepointDTO(String n, String ns, SharepointDTO o, Boolean isNullable, Boolean needType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterSharepointDTO.Write5_SharepointDTO(Object o)
InnerException:
内部的SecurityException不熟悉。造成这种例外的原因是什么?
答案 0 :(得分:0)
ASP.NET使用different trust levels作为其安全策略。这样,应用程序就无法访问其他不相关应用程序中的数据。
Microsoft Sharepoint拥有自己的two additional code access levels,默认情况下在 WSS_Minimal上运行。
由于Web服务作为Sharepoint服务器上的本地应用程序运行,因此需要完全信任
然而,微软不鼓励无奈地应用完全信任。我认为它可能允许其他应用程序调用您的代码,这些代码有可能被恶意利用来利用系统。
因此,防止SecurityException的更好方法是修改项目AssemblyInfo.cs
并将此属性添加到[assembly:AllowPartiallyTrustedCallers]
。