2011-01-05 23 views
0

私はこのエラーを取得していますへのアクセス権を持っていることをリストに存在しません。別のユーザーによって削除された可能性があります。 Microsoft.SharePoint.Library.SPRequestInternalClass.GetListsWithCallback ...AccessDenied.aspx /リストは、ユーザーが

残念ながら、クエリ文字列のリストGUIDは、表示に使用されるルートWebのいくつかのリストの1つにつながりますマスターページのコントロールのユーザー設定。

リストは、次のコードを使用してアクセスされている:

_RootWeb = SPContext.Current.Site.RootWeb; 
storageList = _RootWeb.GetList(_RootWeb.Url + "/Lists/" + 
           LocalStrings.TimeZoneStorageList.ListName); 
SPListItemCollection result = list.GetItems(query); 
SPListItem StorageItem = result[0]; 

xmlDoc.LoadXml(StorageItem[LocalStrings.TimeZoneStorageList.Fields.UserXML] 
                    .ToString()); 

は、ユーザーがUIを通じてリストにアクセスすることが可能である一方、そのコードがAccessDeniedExceptionをスローする可能性があります何がありますか?

また、アクセス許可の問題が実際に他の場所にある場合、SharePointがエラーの原因としてリストを報告する可能性はありますか?

答えて

0

AccessDenied.aspxのクエリ文字列内のリストIDは、実際のエラーとは無関係です。 関連するコードはCatchAccessDeniedExceptionが無効になっていない場合、SharePointはキャッチにもかかわらず、例外を参照して、スレッドを中断します

try { 
    throw new AccessDeniedException(); 
    } 
catch (Exception ex) {} 

storageList = _RootWeb.GetList(ListUrl); 

のようなものでした。これは別のスレッドで制御されるため、同期していないため、コードは引き続きリストにアクセスする途中でスレッドが異常終了するほど長く実行されます。

エラーメッセージの両方の部分が技術的に正しい - AccessDeniedExceptionがあり、最後の操作でリストを開こうとしましたが、実際の接続はありません。

実際の問題は、ログやエラーメッセージには当然出現しなかったmysiteのサービスアカウントのアクセス許可であることが判明しました。

0

あなたは

strListNameは、リストのタイトルである
_RootWeb.Lists[strListName] 

としてあなたのリストを取得して試すことができます。

1

Is there anything that could cause that code to throw an AccessDeniedException while the user is able to access the list through the UI?

これはあなたの場合には適用されないかもしれないが、はい、私はこれはと起こる持っていた:

  1. ユーザーがフィルタリングルックアップリスト
  2. 人々のフィールドへのアクセス権を持っていなかったルックアップフィールドをユーザーがグループのメンバシップを表示する権限を持っていない選択したSharePointグループに割り当てます。

これらのフィールドはいずれも、ユーザーが通常使用するビューまたはフォームには含まれていないため、問題はすぐには検出されませんでした。

0

私の問題はかなり単純でした。現在のサイトへのアクセス許可を持っているユーザーがいましたが、これは問題ありませんでした。しかし、現在のユーザーがアクセスできないサブサイトからアイテムにアクセスする際にエラーが発生したページにリストWebパーツがありました。

私の場合、エラーは「アクセス拒否リスト」になっているはずです。

関連する問題