2010-02-24 109 views
4

我使用Http Handler ashx文件顯示圖像。 我正在使用Session對象來獲取圖像並返回響應在http處理程序中獲取會話ashx

現在的問題是我需要使用自定義會話對象它只是在HttpSession狀態上的包裝但是當我試圖讓現有的自定義會話對象創建新的... 它沒有顯示會話數據,我檢查了會話ID,這也是不同的 請小心如何獲得ashx文件中的現有會話?

注:當我使用ASP.NET Sesssion其做工精細

[WebService(Namespace = "http://tempuri.org/")] 
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
    public class GetImage : IHttpHandler, System.Web.SessionState.IRequiresSessionState 
    { 
+0

你用IRequiresSessionState標記你的處理程序嗎? –

+0

感謝您的答覆,是的,我複製了主要問題的代碼.. 請看看 – batwadi

回答

0

你可以只使用一個ActionResult的,而不是爲這個

return new FileStreamResult(new FileStream(path, FileMode.Open), "image/jpeg"); 

回報的處理程序(新FileResult(Pathtoimage,「image/jpeg」));

,應該讓事情變得更容易爲你西港島線使用一個控制研究/行動,您的網址

<img src="/Images/showImage/1"> 

那麼你可以有你的行動對付像DB拉動爲字節 流什麼,檢查驗證等

+0

我相信這隻會與ASP.NET MVC一起工作。 OP是關於一個自定義的HttpHandler。有沒有控制器或行動... – jrista

+0

這個問題是一個asp.net mvc的問題!他還表示他試圖從winforms獲得一個圖像,他試圖使用httpHandler來做到這一點,但MVC是一個設計模式,所以爲什麼要打破模式,模式工作正常,無需使用任何httpHandler,因爲這被替換爲控制器/行動和wouldent你最好留下一個解決方案! – davethecoder

+0

你的解決方案將工作..但圖像的路徑是什麼?我無法將圖像存儲在服務器端..再次,控制器執行此操作與http處理程序相比,需要更多時間 – batwadi

1

事實上,它是一個ashx應該是不相關的 - 假設請求是從一個現存的會話請求產生的;我假設它應該是 - 但它可能會支付確切的請求是如何形成的。總是希望回到基礎:)

假設沒關係,這是我怎麼一直在做:

string sessionId = string.Empty; 
System.Web.SessionState.SessionIDManager sessionIDManager = new System.Web.SessionState.SessionIDManager(); 
bool supportSessionIDReissue; 
sessionIDManager.InitializeRequest(httpContext, false, out supportSessionIDReissue); sessionId = sessionIDManager.GetSessionID(httpContext); 
if (sessionId == null) 
{ 
// Create/issue new session id: 
sessionId = sessionIDManager.CreateSessionID(httpContext); 
} 

在這個SessionID的變量(應該)包含現有會話結束ID或新創建的一個,您可以稍後再使用。

2

如果您想從ASHX或HttpHandler訪問您的會話狀態,則需要實現IReadOnlySessionState或IRequiresSessionState,如果您需要讀/寫訪問權限。

相關問題