ASP.NET二级域名站点共享Session状态
ASP.NET二级域名站点共享Session状态
2010-01-15 10:44
我的前面一篇文章提到了如何在使用了ASP.NET form authentication的二级站点之间共享登陆状态,
http://www.cnblogs.com/jzywh/archive/2007/09/23/902905.html,
今天, 我要写的是如何在二级域名站点之间,主站点和二级域名站点之间共享Session。
首先, Session要共享,站点之间SessionID必须要一致,那怎么保证SessionID一致呢?
ASP.NET
中的SessionID是存储在客户端的cookie之中键值为ASP.NET_SessionId用来维护浏览者Session对应关系的一个字符串,
要想在二级域名站点之间,主站点和二级域名站点共享SessionID就必须先共享,那么我们就必须先实现ASP.NET_SessionId这一
cookie的共享。
CrossDomainCookieModule
------------------------------------------------------------------------------------------------
public class CrossDomainCookie : IHttpModule
{
private string m_RootDomain = string.Empty;
#region IHttpModule Members
public void Dispose()
{
}
public void Init(HttpApplication context)
{
m_RootDomain = ConfigurationManager.AppSettings["RootDomain"];
context.EndRequest += new System.EventHandler(context_EndRequest);
}
void context_EndRequest(object sender, System.EventArgs e)
{
HttpApplication app = sender as HttpApplication;
for (int i = 0; i < app.Context.Response.Cookies.Count; i++)
{
app.Context.Response.Cookies[i].Domain = m_RootDomain;
}
}
#endregion
}
上
面的Module重设了所有cookie的domain到root domain, root
domain在web.config中设置。也许有人会说这是眉毛胡子一把抓重写了所有cookie的domain,
那他也可以判断一下cookie的name, 如果为ASP.NET_SessionId的话才重写。
如果主站点和二级域名站点是同一站点,那么做到这一步,你的session就已经共享了,因为Session的ID是相同的,而且Session容器也是同一个。
如果主站点和二级域名站点是两个不同站点,则需要进行更多的操作了。
如果两个站点是不同的服务器的话,解决方法要简单点:
1) 使用相同的state server来
相关文档:
根据我个人使用ASP.NET的经验,和通过在网上搜索。我发现,Page的ResolveUrl方法给我们带来了一些比较严重的问题。
最常见的问题是在页面或控件以外的范围不能使用它。
其他的问题都是bug。如它不能正确处理一些你给的URL。例如,尝试 Page.ResolveUrl("~/test.a ......
在服务器端,处理一个ASP.NET Web Form需要几个步骤,在每个步骤都会引发各种事件,这就允许你把网页插入到任一步骤的处理流中并且响应任何你所期望的处理。
以下是ASP.NET网页处理流中的几个主要步骤
1.网页框架初始化
2.用户代码初始化
......
前言
FCKeditor是使用非常广泛的HTML编辑器,本文从 ASP.NET 的使用场景对 FCKeditor 与 FCKeditor.NET 的配置、功能扩展(如自定义文件上传子目录、自定义文件名、上传图片的后期处理等)、以及安全性进行初步的阐述。
希望能帮助有同样需求的同仁节省一点时间;也希望各位能指正其中的不足。谢谢。
一、自定义 FCKedit ......
众所周知,WEB上的打印是比较困难的,常见的WEB上打印的方法大概有三种:
1、直接利用IE的打印功能。一般来说,这种方法可以做些扩展,而不是单单的调用javascript:print()这样简单,比如,可以使用如下代码:
<OBJECT
id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0>
</ ......