ASP.NET - разрешить загруженный путь HttpHandler - PullRequest
1 голос
/ 29 августа 2009

В ASP.NET есть ли способ программно разрешить путь к загруженному HttpHandler, как это определено в Web.config? (т.е. SomeModule.axd)?

Ответы [ 3 ]

4 голосов
/ 07 октября 2009

Если я правильно понял вопрос, вы хотите получить путь из 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 нет понятных «имен», которые вы можете использовать в качестве ключа. Все, что у них есть - это типы (которые могут быть уродливыми строками), пути и глагол. Чтобы найти конкретный обработчик, который вас интересует, вам, возможно, придется искать в типе или пути обработчика известную подстроку, которая идентифицирует конкретный обработчик, который вы хотите найти.

0 голосов
/ 13 октября 2009

Если вас интересует путь к обработчику, обрабатывающему текущий запрос:

string path = HttpContext.Current.Handler.GetType().Assembly.CodeBase;

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

0 голосов
/ 02 сентября 2009

Из текущего контекста http используйте свойство path объекта Request

...