Чтение доступа запрещен Perfmon противостоит от удаленной машины (Asp. Сеть)

Это - один способ реализовать вещи.

Для объектов, которые действительно только управляют тем же объектом много раз, нет ничего действительно неправильно с ним. Рассмотрите Потоки C++: они - окончательное в этом интерфейсе. Каждая операция возвращает поток снова, таким образом, можно объединить в цепочку вместе другую операцию с потоками.

, Если Вы делаете LINQ и делаете управление объектом много раз, это имеет некоторый смысл.

Однако в Вашем дизайне, необходимо быть осторожными. Чем должно состоять в том поведение, если Вы хотите отклониться на полпути через? (IE,

var obj1 = object.Shrink(0.50); // obj1 is now 50% of obj2
var obj2 = object.Shrink(0.75); // is ojb2 now 75% of ojb1 or is it 75% of the original?

, Если obj2 составлял 75% исходного объекта, то это означает создание полной копии объекта каждым разом, когда (и имеет его преимущества во многих случаях, как то, при попытке сделать два экземпляра того же самого, но немного по-другому).

, Если методы просто управляют исходным объектом, то этот вид синтаксиса несколько лицемерен. Это - манипуляции на объекте вместо манипуляций для создания измененного объекта.

Не все классы работают как это, и при этом не имеет смысла делать этот вид дизайна. Например, этот стиль дизайна имел бы мало ни к какой полноценности в дизайне драйвера оборудования или ядре приложения GUI. Пока дизайн включает только управление некоторыми данными, этот шаблон не является плохим.

5
задан Justin 14 October 2009 в 10:10
поделиться

2 ответа

Проблема в том, что IIS работает в контексте локальной учетной записи (по умолчанию). Эта локальная учетная запись не существует на удаленном компьютере, поэтому не может подключиться для получения счетчиков производительности. Когда вы используете веб-сервер разработки VS, он работает под вашей собственной локальной учетной записью, и поэтому все работает.

Если вы находитесь в среде домена, вы можете настроить пул приложений IIS для работы как учетная запись домена с доступом к обеим машинам, и все будет работать, однако вам может потребоваться больший контроль над этим.

Вы можете либо использовать базовую аутентификацию с приложением, настроенным для олицетворения (или если вы используете IIS7 с пулом, настроенным для работы под аутентифицированной учетной записью), либо вы выдаете себя за другое лицо прямо перед тем, как прочитать счетчик.

Есть несколько способов олицетворения - самый безопасный - настроить IIS для использования встроенной аутентификации, а затем завершить вызов.

PerformanceCounter freeSpaceCounter = null;
using (((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate())
{
    freeSpaceCounter = new PerformanceCounter("LogicalDisk", 
                               "Free Megabytes", "D:", "RemoteMachine12");
}

Если вам не нужна аутентификация, вам придется настроить пул приложений, или жестко запрограммируйте имя пользователя и пароль в своем приложении - это должно быть последним средством, см. KB306158

6
ответ дан 14 December 2019 в 04:42
поделиться

Из MSDN:

Чтобы читать счетчики производительности в Windows Vista, Windows XP Professional x64 Edition или Windows Server 2003, вы должны быть членом группы «Пользователи монитора производительности» или иметь права администратора привилегии.

2
ответ дан 14 December 2019 в 04:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: