Kongsi sesi merentas aplikasi menggunakan Perkhidmatan Negeri Sesi ASP.NET
Soalan:
Bagaimana untuk berkongsi sesi antara dua aplikasi web yang dihoskan pada satu pelayan? Satu aplikasi ialah aplikasi .NET 2.0 Web Forms dan satu lagi ialah aplikasi .NET 3.5 MVC2.
Jawapan:
Untuk berkongsi sesi merentas aplikasi menggunakan Perkhidmatan Negeri Sesi ASP.NET, ikut langkah berikut:
Konfigurasikan keadaan sesi dalam kedua-dua aplikasi: Tetapkan mod keadaan sesi kepada "SQLServer" dalam kedua-dua fail web.config dan tentukan rentetan sambungan dan kunci mesin yang sama.
Tetapkan pangkalan data keadaan sesi: Cipta pangkalan data pada pelayan yang boleh diakses oleh kedua-dua aplikasi dan jalankan arahan "aspnet_regsql" untuk menyediakan jadual keadaan sesi.
Ubah suai prosedur tersimpan: Ubah suai prosedur tersimpan "TempGetAppID" dalam pangkalan data keadaan sesi untuk menggunakan nama aplikasi yang dinyatakan dalam rentetan sambungan, memastikan kedua-dua aplikasi menyatakan nama aplikasi yang sama.
Kunci sesi kongsi: Dalam aplikasi borang web, terbitkan kunci sesi kepada aplikasi MVC. Dalam aplikasi MVC, dapatkan kunci sesi dan gunakannya untuk memuatkan data sesi dengan melaksanakan logik tersuai untuk menyimpan dan mendapatkan ID sesi.
Contoh pelaksanaan:
Dalam aplikasi Borang Web:
<code class="language-csharp">protected void LinkButton1_Click(object sender, EventArgs e) { Session["myvariable"] = "dan"; string sessionKey = HttpContext.Current.Session.SessionID; // 后续代码将sessionKey发布到另一个应用程序 }</code>
Dalam aplikasi MVC:
<code class="language-csharp">[HttpPost] public void Recieve(string sessionKey) { var manager = new SessionIDManager(); bool redirected; bool IsAdded; manager.SaveSessionID(HttpContext.ApplicationInstance.Context, sessionKey, out redirected, out IsAdded); var myVar = Session["myvariable"]; }</code>
Sila ambil perhatian bahawa SessionIDManager
pelaksanaan tersuai diperlukan untuk mengendalikan penyimpanan dan mendapatkan semula ID sesi. Contoh ini hanya menyediakan rangka kerja asas, pelaksanaan sebenar mungkin memerlukan logik yang lebih kompleks untuk mengendalikan pemindahan dan penyimpanan data sesi antara aplikasi yang berbeza. Selain itu, keselamatan juga perlu dipertimbangkan dengan teliti untuk memastikan penghantaran kunci sesi adalah selamat.
Atas ialah kandungan terperinci Bagaimana untuk Berkongsi Keadaan Sesi Antara Borang Web .NET 2.0 dan Aplikasi .NET 3.5 MVC2?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!