Azure Webロールでカスタムパフォーマンスカウンタを作成できません

このMSDNの記事で説明したカスタムパフォーマンスカウンタを作成しようとすると、 、私はまだセキュリティの例外が発生します。

私が使用しているコードはその記事と同じですが、私は異なるカウンターを作成しています。

私はスタートアップのタスクでそれを作成しようとすることができると理解していますが、今はその役割の中でやりたいと思っています。うまくいくはずです:

例外:

[SecurityException: Requested registry access is not allowed.]
   Microsoft.Win32.RegistryKey.OpenSubKey(String name, Boolean writable) +12746267
   System.Diagnostics.PerformanceCounterLib.CreateRegistryEntry(String categoryName, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection creationData, Boolean& iniRegistered) +170
   System.Diagnostics.PerformanceCounterLib.RegisterCategory(String categoryName, PerformanceCounterCategoryType categoryType, String categoryHelp, CounterCreationDataCollection creationData) +49
   System.Diagnostics.PerformanceCounterCategory.Create(String categoryName, String categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) +558

私のServiceDefinition.csdefの始まり:

<?xml version="1.0" encoding="utf-8"?>

  
    

RDPをロールして、アプリケーションプールがNetworkService IDで実行されていることがわかりました。ロールを「昇格」に変更したときに別のプリンシパルで実行することを期待していました。これを解決しますが、役割が再構成されたり、アップグレードを導入した場合には重複してしまいます。いずれにせよ、これは実際の解決策ではなく、ハックです。

0
管理APIを自分でラップする代わりにWindows Azure Powershellコマンドレットを使用してみましたか? PowerShellを使用して診断情報をリモートで設定する方法については、David Aikenの記事を参照してください。 davidaiken.com/2011/10/18 /&hellip;
追加された 著者 cory-fowler,

1 答え

フルIISのWebロールの場合、Runtime要素で指定した特別な権限がRoleEntoryPointに適用されます。私は、内部のRoleEntryPoint(通常はWebRole.cs)のOnStartメソッドでカスタムパフォーマンスカウンタを登録する必要があると思います。

2
追加された
.csdefファイルに executionContext = "elevated" />構成を含めることも忘れないでください(例のように)
追加された 著者 Davide Icardi,
あなたは正しい、それは働いた! :)カウンターを初期化するコードをRoleEntryPointのOnStart()に移動し、既存のデプロイメントを削除して、きれいにして公開するようにしました。 - 公開し、カウンターを登録しました。
追加された 著者 Jonathan Levison,