У нас была точно такая же проблема, и проблема для нас заключалась в том, что в файле mobile.browser, который мы получили от CodePlex, есть ошибка, которая заставляет asp.net всегда сообщать настольной версии Opera, что мы отправляем им xhtml. Я удалил файл mobile.browser, и он решил проблему. Кажется, единственное, что мы могли найти, что переопределило бы директиву от mobile.browser, это указать ContentType = "text / html" для каждого тега <% @ Page%> представлений. Даже установка типа контента в global.asax не имела никакого значения.
ОБНОВЛЕНИЕ: Я обнаружил, что удаление всех узлов возможностей с именем "предпочитаемое рендерингMime" из файла mobile.browser решит эту проблему и все еще позволяет нам идентифицировать мобильные браузеры.