1

Sharepojnt2010サイトで使用したい単純なHttpModuleを含むカスタムアセンブリを作成しました。

モジュールをSharePointサイトのweb.config/system.webServer/modulesセクションに追加しました。

次に、DLLをフォルダーに直接コピーしましたbin。これは、suualasp.netアプリケーションが機能する方法だからです。失敗について例外がありましたAspNetHostingPermission

同じDLLを_app_binフォルダにコピーしましたが、機能しました。私のモジュールは初期化されて実行されていました。

次に、モジュールクラスに2つの権限を追加しました。

[AspNetHostingPermission(SecurityAction.InheritanceDemand、Level = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.LinkDemand、Level = AspNetHostingPermissionLevel.Minimal)]

また、これら2つをアセンブリに追加しました

[assembly: SecurityPermission(SecurityAction.RequestMinimum, Execution = true)]
[assembly: AllowPartiallyTrustedCallers]

作成したキーを使用してアセンブリに強く署名しました。

次に、DLLをにコピーして戻しましbinたが、それでも機能しませんでした。それをコピーして動作させ_app_binました。

binDLLをフォルダに直接デプロイするには、何をする必要がありますか?

4

1 に答える 1

1

発生している問題は、SharePointがコードアクセスセキュリティ(CAS)を使用して、非常に十分な教育を受けた管理者が、機能を追加するときに環境を不必要なリスクにさらさないようにすることを可能にしていることです。

問題は、CASが最初から.Netに含まれていても、SharePointの前にほとんど誰もCASを使用していないため、ほとんどの開発者はCASの処理方法を知らないということです。

_app_bin内のすべてが完全な信頼で実行されているため、dllがそこで機能する理由が説明されます。

bin内のすべては、web.configで指定された信頼レベルに応じて、はるかに少ない信頼で実行されます(実際、これは_app_binに完全な信頼があることを指定するものでもありますが、これはすべてのすぐに使用できる信頼レベルに共通です)。

dllをbinから機能させるには(信頼レベルを完全に変更せずに)、信頼レベルが指しているポリシーファイルを、dllが必要とする適切なxmlで変更する必要があります。

属性を追加しても直接は役に立ちません。最初は、実際には問題を悪化させるだけです。これは、dllが権限を必要とするものを呼び出さなくても、dllが権限を要求するためです。

WSPBuilderを使用してSharePointに展開するためのWSPパッケージを構築する場合(WSPを使用している場合)、属性が役立つ場合は、セキュリティ属性を検索し、manifest.xmlに対応するエントリを作成して、SharePointを取得します。対応するエントリを展開時にポリシーファイルに追加します。

属性をWSPBuilderで機能させるには、属性をSecurityAction.Demandに変更する必要があると思います。

于 2010-08-02T06:37:08.097 に答える