Почему не может мой хост (softsyshosting.com) поддерживать обработчики событий BeginRequest и EndRequest?

Можно также использовать

Encoding.ASCII.GetString(ms.ToArray());

, я не делаю , думают , это менее эффективно, но я не мог поклясться ему. Это также позволяет Вам выбрать различное кодирование, тогда как с помощью StreamReader необходимо было бы определить это в качестве параметра.

9
задан Whozumommy 14 July 2009 в 06:23
поделиться

2 ответа

Мне кажется, вы перешли из режима IIS 6 или IIS 7 Classic в интегрированный режим IIS 7. В интегрированном режиме IIS 7 обработка запросов была отделена от запуска приложения. Эта статья объясняет, почему и почему.

Чтобы исправить это, вам нужно вместо этого переместить свой код в Application_BeginRequest.

7
ответ дан 4 December 2019 в 09:14
поделиться

Вам необходимо зарегистрировать свои обработчики в каждом экземпляре HttpApplication. В пуле может быть несколько экземпляров HttpApplication. Application_Start вызывается только один раз (для IIS 6 и IIS 7 в классическом режиме - по первому запросу, для интегрированного режима IIS 7 - при запуске веб-приложения, непосредственно перед любым запросом). Итак, чтобы все заработало, вам нужно добавить обработчики событий в переопределенный метод Init HttpApplication или в его конструктор. Если добавить их в конструктор - эти обработчики будут вызываться первыми, даже раньше обработчиков зарегистрированных модулей.
Итак, ваш код должен выглядеть так:

public class MySmartApp: HttpApplication{
    public override void Init(){
        this.BeginRequest += new EventHandler(MvcApplication_BeginRequest);
        this.EndRequest += new EventHandler(MvcApplication_EndRequest);
    }
    protected void Application_Start(){
        RegisterRoutes(RouteTable.Routes);
    } 
}

или так:

public class MySmartApp: HttpApplication{
    public MySmartApp(){
        this.BeginRequest += new EventHandler(MvcApplication_BeginRequest);
        this.EndRequest += new EventHandler(MvcApplication_EndRequest);
    }
    protected void Application_Start(){
        RegisterRoutes(RouteTable.Routes);
    } 
}
16
ответ дан 4 December 2019 в 09:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: