Sharing sessions across applications using the ASP.NET Session State Service

后端 未结 3 1672
深忆病人
深忆病人 2020-11-22 12:05

I am trying to share sessions between two web applications, both hosted on the same server. One is a .net 2.0 web forms application the other is as .net 3.5 MVC2 application

3条回答
  •  轮回少年
    2020-11-22 12:40

    I did it this way:

    Basically the idea is both apps use native .net sessionState stored in sqlserver. By using the same machine key and making a small tweak to a stored procedure – both apps can share any session keys and/or forms authenication.

    Both apps would do something like this in their web.config:

    
        
    

    Session state db would need to be set up on a database server, that both apps can see.

    Docs for doing this: http://msdn.microsoft.com/en-us/library/ms229862(VS.80).aspx

    Command that would need to be run: C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin>aspnet_regsql.exe -E -ssadd --sstype p -S .\SQLEXPRESS

    Stored procedure (TempGetAppID) tweak to:

     @appId int OUTPUT
    AS
    
        -- start change
    
        -- Use the application name specified in the connection for the appname if specified
        -- This allows us to share session between sites just by making sure they have the
        -- the same application name in the connection string.
        DECLARE @connStrAppName nvarchar(50)
        SET @connStrAppName = APP_NAME()
    
        -- .NET SQLClient Data Provider is the default application name for .NET apps
        IF (@connStrAppName <> '.NET SQLClient Data Provider')
            SET @appName = @connStrAppName
    
        -- end change
    
    SET @appName = LOWER(@appName)
    

提交回复
热议问题