2012-10-25 15 views
1

使用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。

回答

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-s-c.aspx

此外,Microsoft.Web.Administration DLL是不能直接在VS,所以你需要把它从%windir%\syswow64\inetsrv(64位版本)添加。

3

即时更改默认文档不可能在任何实际意义上。

即时写入web.config以加载默认页面的移动版本是非常可怕的,而不是问题的真实背景的答案。如果我甚至提议将此作为加载默认页面的移动版本的答案,我会觉得作为开发人员不负责任。

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

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

HTH!

+0

这是我的理解,当我在default.cs上点击'PreInit'时,要迟来更改加载了哪个default.aspx文件。我看不出这有什么帮助。 – webnoob

+0

我只能说使用51度,或者只是在移动时重定向,或者让主控选择一个单独的“mobile”contentplaceholder,它可以包含您想要的内容(位于单独文件中)的usercontrols。 HTH! – Joe

+0

但这并没有回答问题。我问过如何更改加载的默认页面,而不是如何检测移动版本并显示不同的数据,因为我的引擎已经这样做了。 – webnoob

相关问题