使用ASP.NET 4.0,IIS 7.5。
我有一个网站引擎,我刚刚实现了一种方法来判断它是否在移动设备上加载而不是加载Controls\MyControl.ascx
它加载Mobile\Controls\MyControl.ascx
。这适用于我的控件以及我的MasterPage.Master
文件。
然而,我无法弄清楚我是如何使用Default.aspx做同样的事情。这需要以编程方式动态完成,因为我需要能够检查它是否是移动版本。我想在全局变量中对pre-init事件做一些事情,但不确定这是否是最佳方式。
注意:我不想在Default.aspx上使用内联代码,只是在我的Mobile
标志上显示不同的内容,因为我的方案更进一步,将文件基于客户,这样就可以了意味着对所有不可管理的客户都有一个巨大的Default.aspx。
答案 0 :(得分:3)
在任何实用意义上都无法动态更改默认文档。
动态写入web.config以加载默认页面的移动版本是非常可怕的,而不是您的问题的真实背景的答案。作为开发人员,如果我甚至建议将其作为加载移动版默认页面的答案,我会觉得不负责任。
我试图帮助您解决问题,而不仅仅是回答标题中的基本问题。众所周知,更改web.config将重新启动您的应用程序,并且不会作为真正的解决方案,因为您无法执行此操作并实现任何类型的性能。
这是处理移动浏览器的最佳选择(恕我直言)。 http://51degrees.codeplex.com/
HTH!
答案 1 :(得分:1)
对于其他任何看过这个问题的人,我找到了一个解决方案,但我不确定是否会实现它,因为我不喜欢在运行时更新web.config文件的想法。使用Microsoft.Web.Administration
命名空间,您可以以编程方式更新server.webServer -> defaultDocument
部分。这样做允许您将路径更改为default.aspx,它将根据您设置的变量加载。
此外,Microsoft.Web.Administration
dll在VS中无法直接使用,因此您需要从%windir%\syswow64\inetsrv
(64位版本)添加它。