1

我只是在测试。我在第一个 asp.net 应用程序中创建了一个文本框和一个按钮,在按钮事件中,我将文本框的值存储在存储在数据库中的会话中。

现在我用一个文本框创建了另一个 asp.net 应用程序。现在我想在第一个 asp.net 应用程序中调用文本框的值。

我将如何做?

我已经阅读了所有的理论应用。如果有人可以为它写下代码,那将是很大的帮助。

我用过

<mode="SQLServer"
sqlConnectionString="data source=.;integrated security=true">

在 web.config 中。

我还在 SQL Server 2008 R2 中成功创建了 ASPState 数据库。

protected void Button1_Click(object sender, EventArgs e)
{
Session["mydb"] = TextBox1.Text;
}

我正在存储这样的文本框的值。它以加密形式存储在 SessionId 列中的“ASPStateTempSessions”表下的数据库中。

现在我不知道如何在我的第二个 Web 应用程序的文本框中调用存储在数据库中的这个值。

我希望你能理解我的问题。请帮我!!

4

1 回答 1

2

我找到了解决方案:-

我只是改变了程序,即

USE ASPState
GO

ALTER PROCEDURE dbo.TempGetAppID
    @appName tAppName,
    @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)
SET @appId = NULL

SELECT @appId = AppId
FROM [ASPState].dbo.ASPStateTempApplications
WHERE AppName = @appName

IF @appId IS NULL BEGIN
BEGIN TRAN 

SELECT @appId = AppId
FROM [ASPState].dbo.ASPStateTempApplications WITH (TABLOCKX)
WHERE AppName = @appName

IF @appId IS NULL
BEGIN
EXEC GetHashCode @appName, @appId OUTPUT

INSERT [ASPState].dbo.ASPStateTempApplications
VALUES
(@appId, @appName)

IF @@ERROR = 2627 
BEGIN
DECLARE @dupApp tAppName

SELECT @dupApp = RTRIM(AppName)
FROM [ASPState].dbo.ASPStateTempApplications 
WHERE AppId = @appId

RAISERROR('SQL session state fatal error: hash-code collision between applications ''%s'' and ''%s''. Please rename the 1st application to resolve the problem.', 
18, 1, @appName, @dupApp)
END
END

COMMIT
END

RETURN 0 
GO

和 web.config:-

<sessionState mode="SQLServer" sqlConnectionString="Data Source=.;Integrated Security=True;Application Name=TEST" cookieless="false" timeout="20"></sessionState>
   <httpRuntime targetFramework="4.5"/>

您必须添加应用程序名称,并且对于要共享同一会话的所有应用程序,该名称必须相同。

谢谢。

于 2013-08-12T11:03:12.100 回答