2012-07-12 7 views
35

Ich möchte auf einen Wert zugreifen (der bereits in.aspx-Datei festgelegt ist) in .ashx-Datei. Ich habe versucht, diesen Wert mit Querystring, Sitzung etc, aber jedes Mal, wenn es fehlgeschlagen. Kann mir jemand vorschlagen, wie können wir auf den Sitzungswert in der .ashx-Datei zugreifen?Zugriff auf Session in .ashx-Datei?

+0

"HttpContext.Current.Session" Ich versuche haben diese Hintern immer Exception. –

+4

Welche Ausnahme erhalten Sie? – mrd

+0

@mrd +1 - Alles kann in ein paar tausend Möglichkeiten fehlschlagen .. :) – Onkelborg

Antwort

40

In aspx-Datei:

Session.Add("filename", "Test.txt"); 


Nach Sitzungswert in aspx-Datei festgelegt haben. Verwenden Sie Folgendes, um den Wert in Aschx-Datei abzurufen.

In Ashx Datei:

public class ImageHandler : IHttpHandler, System.Web.SessionState.IRequiresSessionState 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     string Name = ""; 
     if (context.Session["filename"] != null) 
     Name = context.Session["filename"].ToString(); 
    } 
} 
+0

Wie Sie eine Sitzungsvariable festlegen? context.Session ["Dateiname"] = "SomeValue"; ist es richtig? – efirat

+1

Wenn Sie die Sitzungsvariable in der Aspx-Seite festlegen, verwenden Sie einfach Session ("filename") = "somevalue". Wenn Sie den Handler wie oben verwenden, verwenden Sie context.Session ["filename"] = "somevalue". – mrd

+9

Der Schlüssel dieser Antwort ist, dass der Handler so geändert werden muss, dass er von IRequiresSessionState erbt, um Zugriff auf die Sitzung zu haben. –

0

die Sie interessieren,

HttpContext.Current.Session 
+4

erfordert dies immer noch die Informationen aus der obigen Antwort –

51

In der ashx.cs Datei, auch "implementieren" die Schnittstelle System.Web.SessionState.IReadOnlySessionState oder System.Web.SessionState.IRequiresSessionState.

Sie müssen keine Methode implementieren, nur das Vorhandensein dieser Option macht die Sitzung über Lese- oder Lese-/Schreibmodus verfügbar, über context.Session.

Der Header würde wie folgt aussehen:

public class MyHandler: IHttpHandler, System.Web.SessionState.IReadOnlySessionState 
+0

Vielen Dank !!!!! – kevin

+0

Super Antwort! In gewisser Weise rettete mein Leben. Vielen Dank! –

+2

Ich liebe dich. Aus irgendeinem Grund trat dieses Problem nur für mich in Visual Studio 2013 (VS2013) auf. Kann wegen der .NET-Version oder IIS-Express-Version verwendet werden (IIS 7?) Danke für die Hilfe! – Suamere

Verwandte Themen