ASP.NET Проверка MVC является мобильной в Global.asax

#c# #asp.net #asp.net-mvc #iis #global-asax

#c# #asp.net #asp.net-mvc #iis #глобальный-asax

Вопрос:

Я хочу проверить, находится ли пользователь на мобильной странице внутри функции Application_Start в Global.asax, чтобы создать мобильный режим отображения.

Есть ли какой-либо способ, которым я могу это сделать? Я устал запрашивать.Браузер.IsMobileDevice, но я получил исключение «Запрос недоступен в этом контексте»

Комментарии:

1. Application_Start запускается, когда ваш ASP.NET приложение запускается первым. Она не запускается при каждом запросе от пользователя (отсюда и отсутствие доступа к Request ), поэтому это не лучший выбор для обработки действия, специфичного для пользователя / запроса

Ответ №1:

Используйте Application_BeginRequest вместо этого также используйте HTTP_USER_AGENT переменную сервера вместо запроса.IsMobileDevice :

  void Application_BeginRequest(object sender, EventArgs e)
    {
       var u = Request.ServerVariables("HTTP_USER_AGENT");
       var uri =  Request.Url.AbsoluteUri.ToLower();
          //put DetectMobileBrowsersCode Here, for exmaple if user agents contains apple , android , etc ...

          if (b.IsMatch(u) || v.IsMatch(Left(u, 4)))
          {
              Response.Redirect("http://m.yoursite.com");
          } 
    }