5

カスタムWebパーツを作成しようとしています。エラー処理を実装するために、イベントログに書き込みたいと思います。そのために、私は次のコードを使用しようとしています。

protected void btnExceptionTester_Click(object sender, EventArgs e)
    {
        try
        {
            throw new Exception("this is a test");
        }
        catch (Exception ex)
        {
            SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                EventLog.WriteEntry("TestWebpart", ex.ToString(), EventLogEntryType.Error);
            });
        }
    }

このコードを実行しようとすると、SharePointエラーページ(未処理の例外)が表示されます。イベントログを見ると、次のメッセージが表示されます。「要求されたレジストリアクセスは許可されていません」。

私は完全な信頼レベルで(テストのみ)実行しています。イベントログに書き込む必要がある特権の種類を誰かが私に指摘できますか?それとも別のアプローチがありますか?

大いに応用するのを手伝ってください!

4

3 に答える 3

8

Windowsイベントログへの書き込みは試していませんが、代わりに、次を使用して12ハイブのSharePointログに書き込むことができます。

Microsoft.Office.Server.Diagnostics.PortalLog.LogString("your message here!");

お役に立てれば

イアン

于 2009-05-11T21:02:43.893 に答える
1

アップデート

イベントログへの書き込みには、Webパーツでの昇格された特権が必要です。

SPSecurity.RunWithElevatedPrivileges(delegate { EventLog.WriteEntry(...

上の権限:

HKLM \ SYSTEM \ CurrentControlSet \ Services \ Eventlog \ YourWebPartLog

私はあなたの悲しみの原因だと思います。その権限とアプリケーションプールの権限は何ですか?

于 2009-05-11T21:13:08.447 に答える
1

SharePointのEventLogエントリ:

  1. Webパーツの場合12ハイブに存在するULSログにエラーを記録します。

  2. SharePointアプリケーションページの場合は、イベントログにエラーを書き込みます。

  3. 他のすべてのリストおよびライブラリ関連のエラーは、ULSログにのみ記録されます。

ありがとう

于 2009-05-12T14:49:46.980 に答える