0

创建自定义 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 是不熟悉的。是什么导致了这个异常?

4

1 回答 1

0

ASP.NET对其安全策略使用不同的信任级别。这样应用程序就无法访问来自其他不相关应用程序的数据。

Microsoft Sharepoint 有两个自己的附加代码访问级别,默认情况下在WSS_Minimal 上运行。

由于 Web 服务在 Sharepoint 服务器上作为本地应用程序运行,因此需要完全信任

但是,Microsoft 不鼓励应用完全信任。我认为它可能允许其他应用程序调用您的代码,这些代码有可能被恶意使用以利用系统。

因此,防止 SecurityException 的更好方法是修改项目AssemblyInfo.cs并将此属性添加[assembly:AllowPartiallyTrustedCallers]到其中。

Microsoft 关于代码访问安全性的文章

于 2013-05-17T10:00:11.310 回答