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;
}

このようにテキストボックスの値を保存しています。データベースのテーブル「ASPStateTempSessions」の下に、暗号化された形式で列 SessionId に格納されます。

データベースに保存されているこの値を、2 番目の 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 に答える