C# ASP和WCF之间的会话共享

C# ASP和WCF之间的会话共享,c#,asp.net,wcf,session,ninject,C#,Asp.net,Wcf,Session,Ninject,我们尝试为ASP应用程序和WCF服务共享同一会话。 在过去,我们建立了一个POC,它工作正常。我们能够在ASP和WCF中使用相同的会话。但是现在,当我们尝试在当前项目中实现POC时,我们无法检索相同的会话 我们的做法是: 1) 由powershell命令启用的会话 2) 向web.config添加值 同样的机关枪 相同会话状态(SQLServer模式) 相同的httpModule(配置相同的会话、会话应用程序) 相同的模块(指向与httpModule相同的模块) 此外: 在ASP和WCF

我们尝试为ASP应用程序和WCF服务共享同一会话。 在过去,我们建立了一个POC,它工作正常。我们能够在ASP和WCF中使用相同的会话。但是现在,当我们尝试在当前项目中实现POC时,我们无法检索相同的会话

我们的做法是:

1) 由powershell命令启用的会话

2) 向web.config添加值

  • 同样的机关枪
  • 相同会话状态(SQLServer模式)
  • 相同的httpModule(配置相同的会话、会话应用程序)
  • 相同的模块(指向与httpModule相同的模块)
此外:

  • 在ASP和WCF上,我们都有一个会话(来自HttpContext.Current.session),但它们是不同的(例如 示例sessionID不同)
  • 调试时,模块仅在ASP端触发,因此WCF中可能存在问题
  • 我们在应用程序中使用Ninject(不在POC中),但在引导程序中绑定模块
供参考:

public class SharedSessionModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        try
        {
            string appName = Configuration.Session.AppName;
            if (string.IsNullOrEmpty(appName)) return;

            var runtimeInfo = typeof (HttpRuntime).GetField("_theRuntime", BindingFlags.Static | BindingFlags.NonPublic);
            var theRuntime = (HttpRuntime) runtimeInfo.GetValue(null);
            var appNameInfo = typeof (HttpRuntime).GetField("_appDomainAppId", BindingFlags.Instance | BindingFlags.NonPublic);
            appNameInfo.SetValue(theRuntime, appName);
        }
        catch (Exception ex)
        {
            //Logging
        }
    }

    public void Dispose()
    {
        // Nothing to dispose.
    }
}

有人知道问题出在哪里吗?(我想可能是在我使用Ninject,WCF时)

什么是POC?概念证明?那么,这是两个不同的应用程序,还是在同一个应用程序中有WCF?另外,如果sessionid不同,您希望如何共享会话?什么客户端同时称ASP和WCF(同一个客户端或两个不同的客户端)?POC=概念验证。这些是针对不同的应用程序的,运行在不同的应用程序池中。更具体地说,ASP.NET实际上是一个SharePoint网站。问题是sessionID的值是相同的。如果应该共享同一个会话,则sessionID应该相同,但在本例中它们不相同。同一客户端同时调用ASP和WCF。更具体地说:用户调用ASP,但是在页面上,有对WCF/REST服务的ajax调用来检索数据。