В моем приложении есть 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 на уровне компьютера, у меня нет идей!
Да, заблокированный хостинг - это проблема - и я предполагаю, что ваш модуль сторонний?
Нет, это мой собственный, поэтому я могу поместить код в другое место, просто надеялся сохранить его отдельно.
Если вы проверите свойство Modules в классе HttpApplication в System.Web через Reflector, вы увидите, что CAS требует высокого уровня доверия. К сожалению, я знаю ответ моего хостера на вопрос: «У нас есть ЧУДЕСНЫЕ VPS / выделенные серверы!» :(