문제(Trouble)
한가지 웹서비스를 만들어 놓고 여러가지 클라이언트를 지원하는 일은 일상다반사이지요.
그런데 실버라이트에서는 세션유지가 잘 되는데, WinForm에서 사용하려고 하면 세션유지가
잘 안되어서 자꾸 로그인이 안 되었다고 에러를 반환하는 일을 겪어보시지 않으셨나요?
아래와 같이 세션을 사용하는 간단한 웹서비스를 생각해 볼 수 있습니다.
public class Service1 : System.Web.Services.WebService { [WebMethod(EnableSession=true)] public void WriteToSession(string value) { HttpContext.Current.Session["WrittenValue"] = value; } [WebMethod(EnableSession = true)] public string ReadFromSession() { if (HttpContext.Current.Session["WrittenValue"] == null) return ; return HttpContext.Current.Session["WrittenValue"].ToString(); } }먼저 실버라이트 어플리케이션에서 Service Reference로 추가하여 테스트하면
WriteToSession 호출하여 저장한 값을 ReadFromSession을 호출하여 받아낼 수 있습니다.
하지만 윈폼(WinForm) 어플리케이션에서 Service Reference로 추가하여 테스트하면
ReadFromSession 호출 시 반환값은 null입니다.
우째 이런 일이!
아무튼 문제를 해결한 방법은 있으니까 안심하시구요.
해결책 (Solution)
1) 웹서비스를 Service Reference로 추가하지 마시고 Web Reference로 추가하세요.
2) 그리고 서비스 객체를 생성하고 Cookie Container를 생성해 줍니다.
MyService service = new MyService() CookieContainer = new System.Net.CookieContainer();
'Silverlight > Tips' 카테고리의 다른 글
[Tip] VS2010에서 XAML 파일에 오른쪽 클릭했는데 Blend 연결 메뉴가 없을 때 (1) | 2010.02.02 |
---|---|
[Tip] Silverlight 4 Beta Tools 설치 중 오류를 만났을 때 (0) | 2010.02.01 |
실버라이트에서 JSON 데이터 활용하기 (2) | 2010.01.31 |
LINQ 사용 시 동적으로 where 문을 작성하고 싶을 때 (4) | 2009.11.17 |
ChildWindow에서 VisualStateManager.GoToState(...)가 말을 안들을 때 (1) | 2009.10.16 |
방문자 분들의 Silverlight 플러그인 설치상황 [Google Analytics] (0) | 2009.07.28 |
Expression Blend 3와 TFS 연동하기 (12) | 2009.07.22 |