Как я могу подключиться к текущему модулю FormsAuthenticationMo в среде со средним уровнем доверия?
-
08-07-2019 - |
Вопрос
В моем приложении есть HttpModule, который подключается к событию Authenticate FormsAuthenticationModule со следующим кодом:
public void Init(HttpApplication context)
{
FormsAuthenticationModule faModule =
(FormsAuthenticationModule)context.Modules["FormsAuthentication"];
faModule.Authenticate +=
new FormsAuthenticationEventHandler(faModule_Authenticate);
}
К сожалению, вызов context.Modules не выполняется, поскольку приложение должно работать в среде со средним уровнем доверия. Есть ли другой способ, которым я могу подключиться к этому событию?
Решение
Это сложный вопрос - вы даже не можете получить доступ к коллекции модулей из своего файла глобального приложения.
Вы можете попробовать вызвать свой пользовательский код из обработчика AuthenticateRequest в Global:
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
// Call your module's code here..
}
Вы также не можете извлечь свой пользовательский модуль из коллекции, поэтому вам потребуется статическая ссылка на библиотеку вашего модуля.
Кроме предоставления AspNetHostingPermission (, как подробно описано для других разрешений здесь ) на ваш сайт на уровне машины web.config, у меня нет идей!