为什么ASP.NET MVC中的移动视图在不同的服务器上显示不同?

Cro*_*ros 17 asp.net asp.net-mvc mobile asp.net-mvc-4

我正在使用新的ASP.NET MVC 4测试版,我正在尝试创建一个主要使用响应式设计的系统,但对于一个特定的视图,我使用移动视图来呈现移动设备的特定视图.

我的结构很简单,我有一个Show.cshtml,然后我有一个Show.mobile.cshtml.

如果我通过IIS Express从我的开发机器上获取我的网站,这个视图可以正确显示iPad,iPhone,Android手机和移动Opera,如果我在我的开发机器上本地发布到IIS 7.5,它也可以正常工作.

当我们部署到实时服务器时,我们尝试在两个不同的服务器上进行部署.然后移动视图将仅提供给iPhone,而不是其他移动设备.这一直是如此.我们设置的服务器既有Windows 2003/IIS6又有Windows 2008 R2/IIS7.5,两者的工作原理相同,只有iPhone才能在移动视图中使用.

可能是什么原因造成的?

我还没有为global.asax添加任何自定义内容.

UPDATE

经过一些研究后,我似乎很清楚,DisplayMode和移动视图的默认行为取决于Request.Browser.IsMobileDevice标志.反过来,这个标志似乎依赖于.NET Framework文件夹的Config/Browsers文件夹中的.browser文件.

在我的开发机器上,我有不同的.browser文件,而不是我部署到的服务器上的文件.到目前为止,我已经尝试在我的机器上部署我在Web应用程序的App_Browsers文件夹中的那些,但这并没有解决我的问题.这可能是要走的路吗?

tug*_*erk 6

这不是你问题的完整答案,但我认为它仍然会有所帮助.

根据我的经验,ASP.NET不太擅长解决浏览器功能.所以,我可以推荐一下51Degrees.Mobi Foundation.Steven Sanderson有一篇很好的博文:

使用51Degrees.Mobi Foundation在ASP.NET MVC 3上进行准确的移动浏览器检测

我不完全确定,但您应该能够轻松地将其连接到ASP.NET MVC 4 DisplayMode基础结构.这是一个很好的资源:

51Degrees.mobi和MVC4