3

カスタム SharePoint リスト機能のイベント ハンドラーを含むアセンブリ (アセンブリに依存するクラスMicrosoft.SharePoint) を、GAC ではなく Web アプリケーションのビンに正常に展開できますか?

そうするためのオプションは、私の機能の manifest.xml ファイルの XML マークアップに確かに存在するようです。ただし、SharePoint オブジェクト モデルへのアクセスなどの特権を必要とするアセンブリでこれを正常に実行する方法についての指示がほとんどなく、アセンブリに CAS ポリシーを展開することが必須であるというリファレンスをいくつか見てきました。また、CAS の難しさ/問題のために、GAC がほぼ必須であることを示唆する議論も見ました。

実際にアセンブリをフォルダーに展開できました。しかし、セキュリティの問題は大きな障害となっています。アセンブリを実行することができた唯一の方法は (単に例外でエラーを出すのではなく) <trust level="Full" originUrl="">、私の環境では飛ばない web.config の信頼レベルを上げることです。CAS との取り組みを続ける前に、自分がやろうとしていることが可能であることを確認したいと思っています。

これが可能であれば、機能を変更してこの方法でイベント ハンドラーを展開するのに役立つガイダンスやリソースがあれば、感謝します。

4

3 に答える 3

1

質問が正しければ、リストイベントレシーバーをWebアプリケーションのBINディレクトリにデプロイします。

これはSharePoint2010内では不可能ですが、MOSS 2007でサポートされているかどうかはわかりません(サポートされていなかったと思います)。

SharePointは内部でSystem.Reflection.Assembly.Load()メソッドを使用してイベントレシーバーアセンブリを読み込むため、この動作は仕様によるものです。Load()メソッドは、完全修飾されたアセンブリ名でのみ機能するため、アセンブリがグローバルアセンブリキャッシュに存在する必要があります。

于 2011-09-28T07:42:19.600 に答える
1

これにアプローチする 1 つの方法は、ログを開始し、スローされるさまざまな例外を記録してから、手動で CAS ポリシーを作成することです。これは非常に確率論的なアプローチであり、かなり苦痛です。

特定のメソッドまたはクラスに対するすべての許可要求は、事前にわかっている可能性があります。その場合、コードと依存アセンブリを静的に分析し、必要な CAS ファイルを作成するツールを作成できるはずです。残念ながら、私はこれを行うツールを知りません。

価値があるのは、アセンブリをGACすることは、信頼レベルを上げるよりもはるかに「軽い」ようです。

于 2009-12-16T00:07:11.177 に答える