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 には独自の2 つの追加コード アクセス レベルがあり、既定ではWSS_Minimal で実行されます。

Web サービスは SharePoint サーバー上でローカル アプリケーションとして動作しているため、完全な信頼が必要です。

ただし、Microsoft は、完全な信頼を勝手に適用することをお勧めしません。システムを悪用するために悪意を持って使用される可能性のあるコードを他のアプリケーションが呼び出す可能性があると私は収集しています。

したがって、SecurityException を防止するより良い方法は、プロジェクトを変更して、AssemblyInfo.csこの属性[assembly:AllowPartiallyTrustedCallers]をプロジェクトに追加することです。

Code Access Security に関する Microsoft の記事

于 2013-05-17T10:00:11.310 に答える