У меня есть некоторые методы, которые должны работать в качестве определенной учетной записи службы, так что я нормальная вещь:Пользовательский атрибут .NET для выполнения олицетворения?
public DoSomeWorkAsServiceAccount() {
...
// assume I am given tokenHandle
WindowsIdentity newId = new WindowsIdentity(tokenHandle);
WindowsImpersonationContext impersonatedUser = newId.Impersonate();
...
// do the work here
...
impersonatedUser.Undo();
}
я хотел бы избежать написания этого кода в каждом методе, так что я думал о создании пользовательский атрибут:
[Impersonate(tokenHandle)]
public DoSomeWorkAsServiceAccount() {
// do the work
}
Так вот мои вопросы:
- возможно ли это?
- Можете ли вы показать мне что-то, что позволит избежать дублирования кода?
Заранее спасибо.
Спасибо за ответ ... Мне жаль, что у нас не было АОП. И BTW, ваш значок потрясающий. –
Добро пожаловать! Я не поместил его в пример, но убедитесь, что вы завернули свой вызов «op» в блок finally try и удалили объекты WindowsIdentity и WindowsImpersonationContext. – akmad