Невозможно создать пользовательские счетчики производительности в веб-роли Azure. - PullRequest
0 голосов
/ 06 февраля 2012

При попытке создать пользовательские счетчики производительности, как описано в этой статье 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"?>
<ServiceDefinition name="Jonathan.Cloud" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
  <WebRole name="WebDriver" vmsize="Small" enableNativeCodeExecution="true">
    <Runtime executionContext="elevated" />

Когда я выполняю роль RDP, я вижу, что пул приложений все еще работает с удостоверением NetworkService, ожидал, что он будет работать под другим принципом, так как я изменил роль на «повышенную» - вручную настраивая пользовательский Принципал с разрешениями решает это, но он будет переопределен после переконфигурирования роли или если я разверну обновление - в любом случае, это не решение, а взлом: / [frustrated]

1 Ответ

2 голосов
/ 06 февраля 2012

В случае веб-роли полного IIS специальная привилегия, назначенная вами в элементе времени выполнения, применяется к RoleEntoryPoint.Я думаю, что необходимо зарегистрировать пользовательский счетчик производительности с помощью внутреннего метода OnStart RoleEntryPoint (обычно WebRole.cs).

...