【问题标题】:Inner SecurityException while using XmlSerializer使用 XmlSerializer 时出现内部 SecurityException
【发布时间】:2013-05-17 10:00:11
【问题描述】:

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

【问题讨论】:

    标签: asp.net web-services sharepoint serialization


    【解决方案1】:

    ASP.NET 使用different trust levels 作为其安全策略。这样应用程序就无法访问来自其他不相关应用程序的数据。

    Microsoft Sharepoint 有自己的 two additional code access levels,默认在 WSS_Minimal 上运行。

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

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

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

    Microsoft's article on Code Access Security.

    【讨论】:

      猜你喜欢
      • 2023-04-09
      • 2015-09-17
      • 1970-01-01
      • 2016-11-12
      • 1970-01-01
      • 1970-01-01
      • 2012-09-09
      • 2013-09-06
      • 1970-01-01
      相关资源
      最近更新 更多