Подтвердить что ты не робот

Почему мобильные представления в ASP.NET MVC отображаются по-разному на разных серверах?

Я использую новую бета-версию ASP.NET MVC 4 и пытаюсь создать систему, которая в основном работает с адаптивным дизайном, но для одного конкретного представления я использую мобильный вид для отображения определенного вида для мобильных устройств.

Моя структура просто состоит в том, что у меня есть Show.cshtml, и после этого у меня есть Show.mobile.cshtml.

Если я сделаю свой сайт доступным с моей машины-разработчика через IIS Express, это представление правильно отобразится для iPad, iPhone, телефонов Android и мобильных Opera, а также работает так же, если я сделаю локальную публикацию в IIS 7.5 на моей машине dev.

Проблема возникает при развертывании на реальном сервере, мы попробовали развертывание на двух разных серверах. Тогда мобильный вид будет обслуживаться только для iPhone, других мобильных устройств. Это последовательно. Наши серверы настроены как для Windows 2003/IIS6, так и для Windows 2008 R2/IIS7.5, и он работает одинаково на обоих, только iPhone получает доступ к мобильному виду.

Что может быть причиной этого?

Я ничего не добавил в global.asax для этого.

UPDATE

После еще нескольких исследований мне кажется ясным, что поведение по умолчанию для DisplayMode и мобильных просмотров зависит от флага Request.Browser.IsMobileDevice. Этот флаг, в свою очередь, полагается на файлы .browser, которые находятся в папке Config/Browsers в папке .NET Framework.

На моей машине dev у меня разные файлы .browser, чем те, которые присутствуют на серверах, на которых я развернулся. До сих пор я пытался развернуть те, которые у меня есть на своей машине, в папке App_Browsers в веб-приложении, но это не исправило мою проблему. Возможно, это будет путь?

4b9b3361

Ответ 1

Это не полный ответ на ваш вопрос, но я думаю, что он все равно поможет.

ASP.NET не очень хорошо разбирается в возможностях браузера в моем опыте. Поэтому я могу порекомендовать изучить 51Degrees.Mobi Foundation. У Стивена Сандерсона есть хорошая запись в блоге:

Использование 51Degrees.Mobi Foundation для точного обнаружения мобильных браузеров на ASP.NET MVC 3

Я не совсем уверен, но вы должны легко подключить его к инфраструктуре DisplayMode ASP.NET MVC 4. Вот хороший ресурс:

51Degrees.mobi и MVC4

Ответ 2

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

Как и в остальной части Интернета, я установил 51 Degrees from Nuget Это работает отлично, и его очень легко настроить


(Нижеследующее не работает для меня, но, возможно, это для вас) http://www.nuget.org/packages/Microsoft.AspNet.Mvc.FixedDisplayModes

Похоже, что это известная ошибка: http://aspnetwebstack.codeplex.com/workitem/280?PendingVoteId=280

В соответствии с приведенной выше ссылкой codeplex не забудьте убедиться в этом:

Для небольшого набора проектов, которые настраивают список зарегистрированных видов (например, в Global.asax), вы должны убедиться, что вы ссылаются на Microsoft.Web.Mvc.FixedRazorViewEngine или Microsoft.Web.Mvc.FixedWebFormViewEngine, а не классы, которые корабль в двоичном двоичном двоичном файле