spjobdefinitionを使用した権限の問題
-
09-12-2019 - |
質問
私は毎時実行されるSPJOBDEFINITION(WSS)を持っています。ある値に基づいて、そして満たされた場合、それはカレンダーリストにアイテムを追加します。このカレンダーリストには、ItemAddedイベントに接続されているイベント受信者があります。
ジョブがトリガーして項目を追加したときに、コードの一部が実行されます。 Iがイベントログに書き込まれ、web.configファイルからの読み取りに問題があるようです。
私の資格情報を使用して、カレンダーリストに手動でアイテムを追加した場合、すべてがうまく機能します。つまり、EventLogにイベントがあり、web.configファイルからアイテムが読み込まれます。
システムアカウントがカレンダーリストにアイテムを追加している場所を確認できます。私は完全なコントロールを持つグループにシステムアカウントを追加しようとしました、そしてまだ問題があります。
これを働くためにこれを見るために見なければならない他のものはありますか?プールユーザーとネットワークサービスを確認しました。私はそれらをグループに追加しています。
他のどこに見えるのかわからない。
ありがとう
更新(これはイベントログへの書き込みに使用するコードです)
try
{
System.Security.Principal.WindowsImpersonationContext wic = System.Security.Principal.WindowsIdentity.Impersonate(IntPtr.Zero);
EventLog.WriteEntry(source, message, type);
wic.Undo();
}
catch (Exception)
{
}
. 解決
EventLogへの書き込みは、Windowsのアクセス許可が欠落しているためです。
タイマージョブは、Windowsサービスでweb.configを持たないWindowsサービスで実行されます。イベント受信者はイベントを引き起こすプロセスで何でも実行されます。そのため、現在のプロセスのweb.configを読み込もうとすると失敗します。
ファイルシステムにweb.configを読み取ろうとすると、もう一度Windowsのアクセス許可になる可能性があります。
SharePointグループへのユーザーの追加EventLogやファイルへのアクセスを手助けすることはできません。これらはWindowsオブジェクトではなくSharePointオブジェクトではありません。
タイマージョブから実行すると、Impersonate(IntPtr.Zero);
は何も変更されません。それはすでに実行されているプロセスアカウントを偽装します。