2012-05-01 3 views
1

ASP.NET에서 관리하는 SessionCookie를 ashx 파일에서 HTTPHandler를 만들려면 어떻게해야합니까? ashx-File의 호출은 쿠키를 두지 않으므로 세션을 유지할 수 없습니다.ASP.NET에서 세션 쿠키를 배치 할 HTTPHandler (ashx) 만들기

배경 : HTTP 기반 웹 서비스 래퍼를 작성하려고합니다. 다른 클라이언트는 주어진 매개 변수를 제공하는 URL을 호출합니다. 자격 증명을 확인하고 타사 웹 서비스에 전화하여 변경된 결과를 다시 클라이언트에 전달합니다. 타사 웹 서비스 공급자는 계약을 통해 모든 다른 클라이언트 호출에 대해 SessionID를 요구합니다.

해결책 : HTTPHandler가 최선의 선택 인 것 같습니다. 그래서 나는 웹 사이트 프로젝트를 만들었다. 아쉽게도 ashx-File의 직접 호출은 응답에 세션 쿠키를 추가하지 않는 것으로 보이므로 동일한 클라이언트의 모든 호출마다 새 SessionID가 만들어집니다.

나는 다음과 같은 관련했다 :

  • 구현 마크 업 인터페이스 IRequiresSessionState 및/또는
  • 추가 <sessionState mode="InProc" cookieless="false" timeout="20" /> 의 Web.config에 IReadOnlySessionState을
  • 의 Global.asax에 세션 상태에서
  • 저장 뭔가 에있는 파일 Session_Start-Method HttpContext.Current.Session ("init") = 0
피해야 작동하지만개

다른 시도 :

  • 세션이 유지되고, 그래서 Default.aspx를 파일의 호출이 세션 쿠키를 두는 ASHX 파일을 호출하기 전에.
  • 데이터베이스와 타임 스탬프로 "자체"세션을 구현하십시오.

버전 : 6.0

+0

IIS의 버전은 무엇이며 web.config (system.web)의 관련 부분을 공유 할 수 있습니까? –

+0

는 추가 정보를 추가했습니다. – Anytoe

답변

0

IRequireSessionStateIRequireReadOnlySessionState는 상호 배타적 IIS. 어떤 식 으로든 세션 상태를 업데이트하려는 경우에만 이전 버전을 구현해야합니다.

+0

모든 조합을 시도했는데, 불특정하다는 점에 유감스럽게 생각합니다. 문제는 쿠키가 전혀 설정되어 있지 않다는 것입니다. 수동으로 Default.aspx 웹 사이트를 호출하면 세션은 HTTPHandler로 가정하여 작동합니다. – Anytoe

+0

좋습니다. 우리는 계속 작업 할 것입니다. 그러나 IRequireSessionState 만 구현하면됩니다. 나는 당신의 질문에 대한 코멘트에서 좀 더 자세한 내용을 요구할 것입니다. –