Получение ошибки, связанной со счетчиком Peformace, в Window Azure

#azure #console-application #performancecounter

#azure #консольное приложение #счетчик производительности

Вопрос:

Я столкнулся с некоторой критической проблемой, которая может быть интересна для тех, кто играет с window azure sdk. Я создал в EXE файл, который считывает данные счетчика производительности, такие как процессор, память, asp.net сеанс из системы, подобной

 queryCollection = ExecuteWMIQuery("SELECT * FROM win32_perfformatteddata_perfdisk_physicaldisk");
  

и я добавил этот EXE-файл в задачу запуска простого asp.net приложение, которое я загрузил в window Azure. Теперь, когда я подключаюсь к RDP, я вижу следующие ошибки в своем журнале событий, как показано ниже.

Отключен сбор данных счетчика производительности из службы «ASP.NET_64_2.0.50727», поскольку библиотека счетчиков производительности для этой службы сгенерировала одну или несколько ошибок. Ошибки, вызвавшие это действие, были записаны в журнал событий приложения. Исправьте ошибки перед включением счетчиков производительности для этой службы.

======================================================================

Windows не может открыть 64-разрядную расширяемую библиотеку DLL счетчика ASP.NET_64_2.0.50727 в 32-разрядной среде. Обратитесь к поставщику файлов, чтобы получить 32-разрядную версию. В качестве альтернативы, если вы используете 64-разрядную собственную среду, вы можете открыть 64-разрядную расширяемую библиотеку DLL counter, используя 64-разрядную версию Performance Monitor. Чтобы использовать этот инструмент, откройте папку Windows, откройте папку System32, а затем запустите Perfmon.exe .

Итак, я думаю, что мой EXE-файл пытается получить счетчик производительности для 32-разрядной версии (win32 указывает на это), и это зарегистрирует указанную выше ошибку.

Итак, кто-нибудь здесь сталкивался с этим типом проблемы, также, если мое предположение верно, есть ли какой-либо способ реализовать мою логику EXE таким образом, чтобы ее можно было бесперебойно запускать в любой среде (32 или 64 бит)?

Надеюсь, что этот вопрос останется интересным здесь!!!

Заранее спасибо Arun.

Комментарии:

1. Мне просто интересно, есть ли какая-либо причина, по которой вы не используете Azure Diagnostics вместо того, чтобы пытаться реализовать свою собственную? msdn.microsoft.com/en-us/library/windowsazure/gg433048.aspx

2. @Igne Henriksen, да, я читал об этом, но разве это невозможно с помощью этого (моя собственная логика)? я просто получаю ошибку в журнале событий в первый раз, а также получаю данные счетчика производительности в 90% случаев.

Ответ №1:

Это правильно. IIS, запущенный в Azure, работает в 64-разрядной версии, если вы не измените его на 32-разрядный в задаче запуска. Вы можете попробовать создать его с любыми настройками процессора. Но, скорее всего, лучший способ — сделать что-то вроде того, что делает sysinternal tools. При необходимости они будут запускать новый процесс, который выполняется в 64-разрядном режиме. Затем вы можете обработать оба.

Ответ №2:

Я столкнулся с этой ошибкой при переходе на виртуальную машину Azure.

Решена с помощью InstallUtil, который находится в папке Framework64, а не в папке Framework