2012-07-12 17 views
35

Chcę uzyskać dostęp do pewnej wartości (która jest już ustawiona w pliku .aspx) w pliku .ashx. Próbowałem uzyskać tę wartość za pomocą zapytania, sesji itp., Ale za każdym razem nie udało się. Czy ktoś może zasugerować mi, w jaki sposób możemy uzyskać dostęp do wartości sesji w pliku .ashx?Jak uzyskać dostęp do sesji w pliku .ashx?

+0

„HttpContext.Current.Session” Muszę wypróbować ten tyłek zawsze wyjątek. –

+4

Jaki wyjątek otrzymujesz? – mrd

+0

@ mrd +1 - Wszystko może zawieść na kilka tysięcy sposobów .. :) – Onkelborg

Odpowiedz

40

W pliku aspx:

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


Po ustawieniu wartości sesji w pliku aspx. Użyj poniższego, aby uzyskać wartość w pliku Ashx.

W pliku ashx:

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

Jak ustawić zmienną sesji? context.Session ["filename"] = "somevalue"; czy to prawda? – efirat

+1

Jeśli ustawiasz zmienną sesji na stronie aspx, po prostu użyj Session ("filename") = "somevalue". A jeśli ustawisz program obsługi jak powyżej, użyj context.Session ["filename"] = "somevalue". – mrd

+9

Kluczową częścią tej odpowiedzi jest to, że program obsługi musi zostać zmodyfikowany, aby dziedziczył po IRequiresSessionState w celu uzyskania dostępu do sesji. –

0

Spróbuj tego,

HttpContext.Current.Session 
+4

to nadal wymaga informacji z powyższej odpowiedzi. –

51

W pliku ashx.cs, także "wdrożyć" interfejs System.Web.SessionState.IReadOnlySessionState lub System.Web.SessionState.IRequiresSessionState.

Nie musisz implementować żadnej metody, tylko obecność tego czyni sesję dostępną (w trybie tylko do odczytu lub odczytu/zapisu), poprzez context.Session.

Nagłówek wyglądałby następująco:

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

Dziękuję !!!!! – kevin

+0

Niesamowita odpowiedź! W pewien sposób uratowało mi życie. Dziękuję Ci! –

+2

Kocham cię. Z jakiegoś powodu problem ten manifestował się tylko dla mnie w Visual Studio 2013 (VS2013). Może być z powodu wersji .NET lub wersji IIS Express, której używa (IIS 7?) Dzięki za pomoc! – Suamere

Powiązane problemy