龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

ASP.Net实现多虚拟目录Web应用程序之间Session共享(2)

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
1 ALTER PROCEDURE [dbo].[TempGetAppID] 2 @appName tAppName, 3 @appId int OUTPUT 4 AS 5 SET @appName = LOWER(@appName) 6 SET @appId = NULL 7 8 SELECT @appId = AppId 9 FROM [Herald.Session].dbo.ASPState

1    ALTER PROCEDURE [dbo].[TempGetAppID]
 2    @appName    tAppName,
 3    @appId      int OUTPUT
 4    AS
 5    SET @appName = LOWER(@appName)
 6    SET @appId = NULL
 7
 8    SELECT @appId = AppId
 9    FROM [Herald.Session].dbo.ASPStateTempApplications
10    WHERE AppName = @appName
11
12    IF @appId IS NULL BEGIN
13        BEGIN TRAN       
14
15        SELECT @appId = AppId
16        FROM [Herald.Session].dbo.ASPStateTempApplications WITH (TABLOCKX)
17        WHERE AppName = @appName
18       
19        IF @appId IS NULL
20        BEGIN
21            EXEC GetHashCode @appName, @appId OUTPUT
22           
23            INSERT [Herald.Session].dbo.ASPStateTempApplications
24            VALUES
25            (@appId, @appName)
26           
27            IF @@ERROR = 2627
28            BEGIN
29                DECLARE @dupApp tAppName
30           
31                SELECT @dupApp = RTRIM(AppName)
32                FROM [Herald.Session].dbo.ASPStateTempApplications
33                WHERE AppId = @appId
34               
35                RAISERROR('SQL session state fatal error: hash-code collision between applications ''%s'' and ''%s''. Please rename the 1st application to resolve the problem.',
36                            18, 1, @appName, @dupApp)
37            END
38        END
39
40        COMMIT
41    END
42
43    RETURN 0可以看到传入参数是AppName,通过AppName获取AppId,如果不存在则在ASPStateTempApplications表中插入该条记录,这里AppName参数在传入时是不同的应用程序不同的,当然我们可以在这里小改一下...注意第5行 SET @appName = LOWER(@appName) 我们可以毫不客气的改成 SET @appName = 'Everything you want ^_^
            好了(不知道这样做微软会不会很不悦...),大功告成,清理残留的Session,最好重启一下IIS,不用修改旧程序本身丝毫(配置web.config除外),实现了Session共享...以后凡是使用该数据库作为Session存储的都可以共享Session了...

精彩图集

赞助商链接