我的一个网站下用了泛解析,支持多个子域名,但我看到多个子域名间的session并不通用,在主站登录完后转到子域名session还是旧的,怎么才能通用?二级域名和主域名都是绑的一个网站上的

解决方案 »

  1.   

    http://www.cnblogs.com/jzywh/archive/2007/09/23/902905.html
      

  2.   

    楼上的不管用,主域名和二级域名下的session还是不能同步
      

  3.   

    用数据库级的session,跨域的session是不能直接通用的
      

  4.   

    webconfig中
    <system.web>
        <sessionState mode="InProc"
                      stateConnectionString="tcpip=127.0.0.1:42424"
                      stateNetworkTimeout="10"
                      sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI"
                      cookieless="false"
                      timeout="20" />
    </system.web>
    sessionState 4种模式
    InProc 模式兼容以前 ASP 的策略,在 ASP.NET 同一进程空间内实现基于内存的会话状态管理,速度最快但受到与 ASP 相同的限制;
        StateServer 模式通过 ASP.NET 独立安装的 ASP.NET State Service 服务(aspnet_state.exe),以 stateConnectionString 指定的IP和端口响应会话状态服务;
        SQLServer 模式则通过 sqlConnectionString 指定的 SQL Server 服务器,以内存临时表(以 InstallSqlState.sql建库,使用 tempdb 内存数据库)或独立表(以InstallPersistSqlState.sql 监控,使用独立的 ASPState 库)维护会话状态。
      

  5.   

    不过效率可能会有所下降,如果要求性能很高,建议使用cookie把
      

  6.   


    你先把内容看懂, 前提是用Form验证
      

  7.   

    我没有用form,直接取参数设置的session,这个能不能用?
      

  8.   

    用cookies每次都要验证啊,session不是省点效率
      

  9.   

    建议改用Cookie,
    然后写一个IHttpModule:
    public class CookieDomainModule:IHttpModule  //继承IHttpModule接口
    {
        public CookieDomainModule()
    {
    }    #region IHttpModule Member    public void Dispose() 
        {
        
        }    public void Init(HttpApplication context)
        {
            context.EndRequest += new EventHandler(context_EndRequest);
        }
       
        void context_EndRequest(object sender, EventArgs e)
        {
            HttpContext context = ((HttpApplication)sender).Context;
            
            string domain = ".Insus.NET";  //你的二级域名
            string cookieName = FormsAuthentication.FormsCookieName;
            HttpCookie cookie = context.Response.Cookies[cookieName];
            if (cookie != null)
            {
                cookie.Domain = domain;
            }
        }    #endregion
    }
      

  10.   

    mode="InProc"
    是默认值,你要用StateServer 模式(要开启一个服务)   或 SQLServer 模式
      

  11.   

    Store session in StateServeror try 上面的
    public class CookieDomainModule:IHttpModule  的方法,不过要改一下, 把所有cookie的domain都设成".Insus.NET", 而不是只修改名为FormsAuthentication.FormsCookieName的,因为你没有用验证