Как использовать http-модуль для событий пожара только для определенных типов страниц

У меня есть модуль http на сайте sharepoint, и этот модуль создает экземпляр пользовательского класса и добавляет его в сеанс, а также выполняет другие начальные действия для моего сайта. Однако я заметил, что модуль http вызывается для всех типов запросов (.aspx, .js, .png, .jpg).

Есть ли способ вызвать модуль http только для конкретных типов страниц .net?


person Community    schedule 01.12.2008    source источник


Ответы (5)


В IIS вы настроите обработчик, который будет связан с вашим конкретным расширением, поэтому обработчик будет применяться только к этому расширению. Файлы JavaScript не должны обрабатываться.

person Ryan Montgomery    schedule 01.12.2008

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

person Ryan Montgomery    schedule 01.12.2008

Я провел немного больше исследований, и кажется, что нет никакого способа сделать то, что я намереваюсь. Мне нужно будет проверить тип запроса и отменить оттуда.

Спасибо всем за ответы.

D

person Community    schedule 01.12.2008

Вы можете сделать это очень простым способом, используя HttpModule (перед выполнением каких-либо вызовов дорогостоящей объектной модели SharePoint), проверив расширение в содержимом последнего Uri.Segments.

void context_BeginRequest(object sender, EventArgs e)
{
    HttpApplication app = (HttpApplication)sender;
    Uri uri = app.Request.Url;
    string lastSegment = uri.Segments[uri.Segments.Length-1];
    .. check your extension here an do nothing if it doesn't match.
    ..
}

Мы используем это в нашей реализации «TinyURL» для SharePoint, чтобы обеспечить почти нулевое влияние на производительность обычных URL-адресов.

person Jeroen Ritmeijer    schedule 29.05.2009

Вот простой пример, как фильтровать запросы по расширению... пример ниже исключает из обработки файлы с определенными расширениями.

public class AuthenticationModule : IHttpModule
{
    private static readonly List<string> extensionsToSkip = AuthenticationConfig.ExtensionsToSkip.Split('|').ToList();

    // In the Init function, register for HttpApplication 
    // events by adding your handlers.
    public void Init(HttpApplication application)
    {
        application.BeginRequest += new EventHandler(this.Application_BeginRequest);
        application.EndRequest += new EventHandler(this.Application_EndRequest);
    }

    private void Application_BeginRequest(Object source, EventArgs e)
    {
        //  we don't have to process all requests...
        if (extensionsToSkip.Contains(Path.GetExtension(HttpContext.Current.Request.Url.LocalPath)))
            return;

        Trace.WriteLine("Application_BeginRequest: " + HttpContext.Current.Request.Url.AbsoluteUri);
    }

    private void Application_EndRequest(Object source, EventArgs e)
    {
        //  we don't have to process all requests...
        if (extensionsToSkip.Contains(Path.GetExtension(HttpContext.Current.Request.Url.LocalPath)))
            return;

        Trace.WriteLine("Application_BeginRequest: " + HttpContext.Current.Request.Url.AbsoluteUri);
    }
}

В конфигурационном файле укажите, какие расширения следует исключить, и инициируйте список расширений в модуле.

person Mr. Pumpkin    schedule 23.08.2013