2010-02-24 3 views
4

이미지를 표시하기 위해 HTTP 처리기 ashx 파일을 사용하고 있습니다. 세션 객체를 사용하여 이미지를 얻고 응답을 반환했습니다.HTTP 처리기에서 세션 가져 오기 ashx

이제는 문제가 생겼습니다. HttpSession 상태의 Wrapper 만 사용자 정의 세션 객체를 사용해야합니다. 그러나 기존 사용자 정의 세션 객체를 새로 만들려고 할 때 ... 세션 데이터를 표시하지 않고 다른 세션 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

방금 ​​오히려이

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

또는

반환에 대한 핸들러보다 Actionresult을 사용할 수 있습니다 (새 FileResult (Pathtoimage, "image/jpeg")); 당신이 당신의 URL로 설정 제어/액션을 사용 줘야 사물을 쉽게한다

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

당신은 당신의 행동 바이트 스트리밍으로 DB에서 당겨 같은 것을 처리 할 수 ​​있습니다 유효성 검사 등

+0

나는 이것이 ASP.NET MVC에서만 작동한다고 믿습니다. OP는 맞춤 HttpHandler와 관련되어있었습니다. 아니 컨트롤러 또는 작업 ... – jrista

+0

질문 asp.net mvc 질문입니다! 또한 그는 그가 httpHandler를 사용하여 winforms에서 이미지를 얻으려고했지만 httpHandler를 사용하여 MVC를 디자인 패턴으로 만들었으므로 패턴이 깨지는 이유는 패턴이 httpHandler를 사용하지 않고도 잘 작동한다는 것입니다. 컨트롤러/액션과 솔루션을 떠나는 것이 더 좋을 것입니다 !!!! – 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); 
} 

: 항상이 내가 그 일을 봤는데 어떻게, 그 괜찮아 가정 기본 :

로 돌아갈 지불 ID 또는 나중에 재사용 할 수있는 새로 생성 된 ID입니다.

2

ASHX 또는 HttpHandler에서 세션 상태에 액세스하려면 읽기/쓰기 액세스가 필요한 경우 IReadOnlySessionState 또는 IRequiresSessionState를 구현해야합니다.

관련 문제