1

使用 ASP.NET 4.0、IIS 7.5。

我有一个网站引擎,我刚刚实现了一种方法来判断它是否正在加载到移动设备上,而不是加载Controls\MyControl.ascxMobile\Controls\MyControl.ascx。这适用于我的控件和我的MasterPage.Master文件。

然而,我想不通的是如何使用 Default.aspx 做同样的事情。这需要以编程方式即时完成,因为我需要能够检查它是否是移动版本。我正在考虑在全局变量的预初始化事件上做点什么,但不确定这是否是最好的方法。

注意:我不想在 Default.aspx 上使用内联代码,而只是根据我的Mobile标志显示不同的内容,因为我的场景更进一步,也将文件基于客户,这意味着有一个巨大的 Default.aspx 用于所有无法管理的客户。

4

2 回答 2

3

在任何实际意义上,动态更改默认文档是不可能的。

即时写入 web.config 以加载默认页面的移动版本,坦率地说,这很糟糕,并且不能回答您问题的真实背景。如果我什至建议将此作为加载默认页面的移动版本的答案,作为开发人员,我会感到不负责任。

我试图帮助您解决问题,而不仅仅是回答标题中的基本问题。众所周知,更改 web.config 将重新启动您的应用程序,并且不会作为真正的解决方案,因为您无法这样做并获得任何类型的性能。

这是处理移动浏览器的最佳替代方案(恕我直言)。 http://51degrees.codeplex.com/

于 2012-10-25T15:13:23.223 回答
1

对于其他看到这个的人,我已经找到了一个解决方案,但我不确定我是否会实施它,因为我不喜欢在运行时更新 web.config 文件的想法。使用命名空间,您可以以编程Microsoft.Web.Administration方式更新该部分。server.webServer -> defaultDocument这样做允许您更改 default.aspx 的路径,它将根据您设置的变量加载。

此链接应提供更多信息:http: //blogs.msdn.com/b/saurabh_singh/archive/2007/11/24/accessing-iis-7-0-features-programmatically-from-configuration-file-sc.aspx

此外,该Microsoft.Web.Administrationdll 不能直接在 VS 中使用,因此您需要从%windir%\syswow64\inetsrv(64 位版本)添加它。

于 2012-10-29T08:36:08.653 回答