Можно также использовать
Encoding.ASCII.GetString(ms.ToArray());
, я не делаю , думают , это менее эффективно, но я не мог поклясться ему. Это также позволяет Вам выбрать различное кодирование, тогда как с помощью StreamReader необходимо было бы определить это в качестве параметра.
Мне кажется, вы перешли из режима IIS 6 или IIS 7 Classic в интегрированный режим IIS 7. В интегрированном режиме IIS 7 обработка запросов была отделена от запуска приложения. Эта статья объясняет, почему и почему.
Чтобы исправить это, вам нужно вместо этого переместить свой код в Application_BeginRequest.
Вам необходимо зарегистрировать свои обработчики в каждом экземпляре 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);
}
}