3

Win7 で実行されている ASP.Net アプリ .net 3.5 SP1 があります。ログイン プロセス中に、ASP.Net ログイン コントロール内の何かによって、イベント ログのセキュリティ ログに書き込みが発生します (これは私には受け入れられるように思えます)。問題は、アプリにこれを行う権限がないように見えることです。エラーがあります:

説明: アプリケーションは、セキュリティ ポリシーで許可されていない操作を実行しようとしました。このアプリケーションに必要な権限を付与するには、システム管理者に連絡するか、構成ファイルでアプリケーションの信頼レベルを変更してください。

例外の詳細: System.Security.SecurityException: タイプ 'System.Diagnostics.EventLogPermission、System、Version=2.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089' のアクセス許可の要求が失敗しました。

スタック トレースには、アプリケーションのコードが 1 行も表示されず、すべてがフレームワーク内にあります。最後の 5 行: System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) +0 System.Security.CodeAccessPermission.Demand() +61 System.Diagnostics.EventLog..ctor(String logName, String machineName , String source) +125 System.Diagnostics.EventLog..ctor() +24 System.Diagnostics.EventLog.WriteEntry(String source, String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData) +52

この同じアプリは、XP SP2 で正常に動作します。探し回ったのですが、許可を与える方法が見つかりません。アプリ プールを LocalSystem および ApplicationPoolIdentity として実行してみました。

これを実行する最も簡単な方法は何ですか? それは私のローカル開発マシンであり、コードを変更する必要がない限り、セキュリティホールを開いても気にしません(つまり、解決策がINETMGRの変更またはweb.configまたはいくつかのローカル権限などである必要があります) )。

ありがとう!

4

2 に答える 2

2

このリンクは、発生している問題について話し合うように見えます。XP と Windows 7 の既定の CAS (コード アクセス セキュリティ) の違いについてはよくわかりませんが、イベント ログに書き込むアセンブリ (およびすべての呼び出しアセンブリ) には EventLogPermission が必要です。

AllowPartiallyTrustedCallers属性を追加するか、厳密な名前のキーでアセンブリに署名することができます。

于 2009-12-01T01:21:47.097 に答える