私は非常に奇妙な状況に陥っています。
Webアプリケーションで新しいサイトをプロビジョニングするために使用するワークフローがあります。このワークフローは、1つのカスタムワークフローアクティビティを使用して、次のステートメントを使用してサイトをプロビジョニングします。
---わかりやすくするために他のコードは省略されています----
SPSiteCollection.Add()
このステートメントは、アプリケーションプールアカウントがサーバーの全体管理アプリケーションプールアカウントと同じでない場合に、followign例外をスローします。
アクセスが拒否されました。(HRESULTからの例外:0x80070005(E_ACCESSDENIED))Microsoft.SharePoint.SPGlobal.HandleUnauthorizedAccessException(UnauthorizedAccessException ex)at Microsoft.SharePoint.Library.SPRequest.CreateSite(Guid gApplicationId、String bstrUrl、Int32 lZone、Guid gSiteId、Guid gDatabaseId、String bstrDat
たくさんのグーグルと発見の後、私はアプリケーションプールアカウントの許可にゼロを合わせました。
ワークフローコードは、常にシステムアカウント(アプリケーションプールID)で実行されます。新しいSharePointサイトコレクションを作成するには、アプリケーションプールで「SharePoint_Config」データベースにアクセスする必要があります。
私のWebアプリケーションがサーバーの全体管理のアプリケーションプールクレデンシャルで実行されている場合、そのアプリケーションは構成データベースへのすべてのアクセス権を持っています。しかし、私が他のアプリケーションプールIDの下で実行しているときは、権限が少なくなります。構成データベースのアプリケーションプールアカウントにDBO権限を付与しても、例外がスローされます。
私のアプリケーションイベントログには次のエントリがあります:-
イベントソース:Windows SharePoint Services 3イベントカテゴリ:データベースイベントID:3760日付:2010年2月3日時間:2:36:16 AMユーザー:N / Aコンピューター:SHAREPOINT20説明:SQLServerインスタンス上のSQLデータベース'SharePoint_Config' houspsr001'が見つかりません。SQLServerからの追加のエラー情報は以下に含まれています。
ログインで要求されたデータベース「SharePoint_Config」を開くことができません。ログインに失敗しました。ユーザー「DOMAIN\WebAppPool」のログインに失敗しました。
詳細については、ヘルプとサポートセンター( http://go.microsoft.com/fwlink/events.asp )を参照してください。
私の質問は...中央管理者のアプリケーションプールアカウントでそのようなコードを実行することが必須ですか?
これに対する回避策はありますか....?
私の質問