3

SPWebConfigModification クラスを使用して web.config の変更を行っています。それらを WebApplication に追加して Update を呼び出すと、SecurityException がスローされますが、

  • 昇格された特権でコードを実行します (そして、SPSite の新しいインスタンスを開きます)
  • 私のアセンブリはGACにあります
  • アプリケーション プール アカウントは wss_admin_wpgグループからのものであり、web.config ファイルにはwss_admin_wpg書き込み権限があります。

コード

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    addProviderProxy(properties);
});

addProviderProxy(SPItemEventProperties プロパティ)

using (SPSite site = new SPSite(properties.SiteId))
using (SPWeb web = site.OpenWeb())
{
  ensureSectionGroup(web);
  ...
}

ここで、ensureSectionGroup (SPWeb Web)

  SPWebApplication webApp = web.Site.WebApplication; 
  ...
  webApp.Update(); <--Throws exception here

例外の詳細

System.Security.SecurityException was caught
  Message="Piekļuve liegta." //(Translates to something like "Access Denied")
  Source="Microsoft.SharePoint"
  StackTrace:
       at Microsoft.SharePoint.Administration.SPPersistedObject.Update()
       at Microsoft.SharePoint.Administration.SPWebApplication.Update()
       at Balticovo.SharePoint.AdjustWebConfigForOutlook.ensureSectionGroup(SPWeb web)
  InnerException: 
4

2 に答える 2

4

これを PowerShell スクリプトで実行してから、更新を再試行してください。

$contentService = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
$contentService.RemoteAdministratorAccessDenied = $false
$contentService.Update()

私はまだ 2010 のアクセス許可のコツをつかんでいます。Paul Kotlyarによると、それは役に立ちます。

于 2010-10-29T01:29:35.000 に答える
1

SPPersistedObject.Update() で「Access Denied」エラーが発生しているため、これは明らかにオブジェクトの永続化に問題があることを示しています。これは、SharePoint 構成データベース (または別の SP データベース) への書き込み権限エラーである可能性が非常に高いです。

可能であれば、SQL ログを確認するか、SQL プロファイラー トレースを実行して、問題の原因となっているアカウントに関する詳細情報を取得してください。コードを実行しているアカウントが構成データベースにアクセスできることを確認します。

アップデート:

ユーザーをファーム管理者のグループに追加することで、構成データベースにアクセス許可を与えることができます。これにより、そのデータベースに対する db_owner 権限が付与されますが、これはアカウントが何でもできることを意味するため、理想的ではありません。ただし、このデータベースにアクセスできる他の方法 (私が知っている) はありません。

これが大きな懸念事項である場合は、SQL Server Management Studio を使用して自分でアクセス許可を変更できます。理想的には、SQL プロファイラーを使用して、必要なアクセス許可のみを付与する新しいロールを考案します。または、アカウントをロールおよび/またはロールに追加してみてWSS_Content_Application_Poolsください。data_readerdata_writer

于 2009-09-07T11:49:50.927 に答える