Есть ли в ASP.NET способ программно разрешить путь к загруженному HttpHandler, как он определен в Web.config? (например, SomeModule.axd)?
ASP.NET — разрешить загруженный путь HttpHandler
Ответы (3)
Если я правильно понимаю вопрос, вы хотите получить путь из web.config, верно?
Если это так, то вы, вероятно, ищете что-то вроде этого:
string p = null;
System.Web.Configuration.HttpHandlersSection httpHandlersSection =
(System.Web.Configuration.HttpHandlersSection)
System.Configuration.ConfigurationManager.GetSection("system.web/httpHandlers");
foreach (System.Web.Configuration.HttpHandlerAction handler in httpHandlersSection.Handlers)
{
if(handler.Type == "myType")
{
p = handler.Path;
break;
}
}
Хитрость здесь заключается в операторе if. У обработчиков в web.config нет понятных «имен», которые можно использовать в качестве ключа. Все, что у них есть, это типы (которые могут быть уродливыми строками), пути и глагол. Чтобы найти конкретный обработчик, который вас интересует, вам, возможно, придется искать в типе или пути обработчика известную подстроку, которая идентифицирует конкретный обработчик, который вас интересует.
Из текущего контекста http используйте свойство path объекта Request.
Если вас интересует путь к обработчику, обрабатывающему текущий запрос:
string path = HttpContext.Current.Handler.GetType().Assembly.CodeBase;
Если бы вы знали, где найти коллекцию других экземпляров обработчика, вы могли бы использовать тот же подход, чтобы получить их пути.