0

カスタム Web パーツを開発しました。ページに追加でき、サイトの所有者は問題なくページを表示できます。

ただし、サイトの訪問者/ユーザーは、拒否されたエラー ページにアクセスするようにリダイレクトされます。確かに、私は通常のユーザーが許可されていないことをしているに違いありません。

しかし、私を悩ませているのは、webpart コンストラクターまたは変数宣言にブレークポイントを配置しても、ヒットしないことです! (限られた権限でページを表示しようとした場合)。しかし、私のブラウザでは、アクセス拒否ページが表示されます。ただし、その Web パーツを閉じると、すぐにそのページにアクセスできるようになり、すべて問題ありません。

ここでのキャッチは何ですか?デバッガーで例外をキャッチして、どのステートメントが有罪かを確認できることを望んでいましたが、webpart はコードを実行していないようで、その例外が発生します。

編集:申し訳ありませんが、デバッガーがこれらのブレークポイントにヒットするようになりました。シンボルが読み込まれたため、何が変わったのかわかりません。

4

3 に答える 3

2

Sharepoint サイトの信頼レベルは? アクセスに問題があるかどうかを確認するために、一時的に Fulltrust を付与することをお勧めします。

はいの場合は、コード アクセス セキュリティ (CAS) の問題が発生している可能性があります。私の最初の本能は、アセンブリには、通常のユーザーが正しく実行するために必要な特権がないということです。Web パーツの manifest.xml でカスタム CAS エントリを使用して構成できます。たとえば、外部リソースを呼び出す場合は、System.New.WebPermission を構成し、アクセスを許可する URL を定義する必要があります。詳細については、U2U サイトを参照してください。

また、あなたのWebパーツは何をしますか? 通常のユーザーがアクセスできないリソース (たとえば、一部のサイトのリスト) にアクセスしようとしている場合は、SPSecurity.RunWithElevatedPrivilagesメソッドを使用して、必要な権限を取得する必要があります (新しい Site インスタンスを作成するように注意してください)。コンテキストが正しく設定されるように、そのメソッド内で)。

于 2009-11-03T15:04:40.283 に答える
0

解決策を見つけました。

そのグループユーザーにアクセスしようとすることで、ユーザーが特定のグループに属しているかどうかを判断したかったことがわかりました。ユーザーがそのような権限を持っていない場合、これは不可能だったので、メッセージで何らかの内部例外をスローしていました

「コードが最適化されているか、ネイティブ フレームが呼び出し履歴の上にあるため、式を評価できません。」

とにかく、SPUser.Groups (SPGroupCollection)グループプリンシパルを列挙して彼が中にいるかどうかを確認するのではなく、ループして一致するグループがあるかどうかを確認することを学びました。

于 2009-11-06T11:39:32.690 に答える
0

訪問者グループに許可 (個人 Web パーツの更新) を与える必要があります。ただし、お勧めしません。必要に応じて、別のアクセス許可レベルを作成して、それを訪問者グループに関連付けることができます。

乾杯!!

于 2011-05-09T09:40:41.083 に答える