2011-07-29 22 views
3

我在同一个Web应用程序中有几个网站集,我需要处理用户从一个网站集到另一个网站集时的事件。我需要它来执行特定的操作,例如设置“lcid”cookie来更改站点的默认语言,并将值声明为用户属性映射。如何在用户从同一个Web应用程序中的一个网站集合转到另一个网站集合时检测事件?

当前我正在使用自定义HTTP模块,它处理所有PostAuthorize Web应用程序请求并检查当前用户和网站集,为集合中的每个用户保存最后访问的网站,并在检测到网站之间的转换时触发用户的自定义事件集合。

但我认为这种方法会降低Web应用程序的性能。从日志中我发现,即使用户只需单击其他网站集中的页面链接,也可以获得许多PostAuthorize请求。此外,在类似的情况下,有时会有一系列请求“下一个”网站集,然后是“上一个”,然后再到“下一个”。此外,当此模块处于活动状态时,SharePoint Designer也会出现一些问题(无法编辑页面)。

你能否给我一个更好的方法来完成这个任务的建议?提前致谢。

回答

1

1种方法是使用隐藏的控件和cookie。
在所有目标站点集合的所有主页中保留一个隐藏控件。 此控件将检查当前网站集URL并将其保存在cookie中。可能在您存储lcid的同一个cookie中。
从下一次加载开始,它会尝试匹配Cookie中的网址和当前的网站集URL。如果不同,请调用您要执行的代码并更新Cookie中的网址。
这比httpmodule的性能要轻得多。

相关问题