我的结构只是我有一个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文件。到目前为止,我已经尝试在网络应用程序的App_Browsers-文件夹中部署我的机器上的那些,但是这并不能解决我的问题。可能这样吗?
解决方法
ASP.NET在我的经验中不是很好地解决浏览器功能。所以,我可以建议看看51Degrees.Mobi Foundation.史蒂文·桑德森有一个很好的博客文章:
Using 51Degrees.Mobi Foundation for accurate mobile browser detection on ASP.NET MVC 3
我不完全确定,但您应该可以轻松地将其挂钩到ASP.NET MVC 4 DisplayMode基础架构。这是一个很好的资源: