2009-04-07 17 views
7

webpartでこのようにプログラムで共有ポイントリストにアクセスしようとしています。SharePoint Accessで拒否されたエラーをキャッチできません

try 
{ 
     masterList = web.Lists[listId]; 
} 
catch(Exception e) 
{ 
     RenderExceptionMessage(e.Message); 
} 

RenderExceptionMessage()メソッドは、webpart内にユーザーフレンドリなエラーメッセージを表示することになっています。

しかし問題は、例外をトラップできないことです。代わりにWebパーツページがアクセス拒否ページにリダイレクトされ、「現在あなたはDomain \ userとして現在サインインしています」というメッセージが表示されます。

また、例外のメッセージには「コードが最適化されているか、ネイティブフレームがコールスタックの上にあります。

これはなぜこのように動作しますか?

答えて

9

デフォルトでは、SharePointでは、ページ/ Webサービスのリクエスト内でアクセス拒否例外(カスタムページへのリダイレクトを含む)のカスタム処理が行われ、コード内の例外処理が回避されます。

このカスタム処理を無効にするには、SPSecurity.CatchAccessDeniedExceptionをfalseに設定します。

1

これを処理するもう1つの方法は、ユーザーがSPWebおよび/またはSPListにアクセスできるようにチェックなどの防御プログラミングを追加することです。私の頭の上から、私はSPWeb.EnsureUserが助けることができると思います。 SPList.CheckPermissionsまたはSPList.DoesUserHavePermissionsも同様に役立ちます。

関連する問題