2010-12-22 2 views
2

여러 웹 응용 프로그램에서 사용되는 복합 웹 컨트롤을 작성했습니다. 세션 변수 (예 : HttpContext.Current.Session("MyProgramMemberId"))를 사용할 경우 호스트 사이트에서 동일한 세션 키 이름을 정의했을 위험이 있습니까?복합 컨트롤을 만들고 세션을 사용할 때 호스트 응용 프로그램과 충돌 할 수 있습니까?

문제가 있으면 알려주십시오. 신뢰할 수있는 웹 사이트 참조가있는 경우 보너스가됩니다.

감사합니다!

답변

2

나는 이것에 대한 실제 경험이 없다고 말할 수는 없지만 (예를 들어 내가 이것을하지 않기 때문에 주로) 과 똑같은 이름의 다른 세션 변수와 충돌을 일으킬 수있다. 호스팅 웹 응용 프로그램.

내가 제안하는 것은 세션 변수에 의존하지 않고 대신 ViewState 변수를 사용하는 것입니다. 이러한 요소는 컨트롤의 특정 인스턴스와 더 분리되어 있으므로 서로 충돌하지 않아야합니다. 물론 저장해야 할 사항에 따라 고려해야 할 사항이 있습니다. 큰 개체, 목록, 사전 및 viewstate (클라이언트로 전송되는 끝나는)의 중요한 정보를 저장하려고 조심해야합니다. 그러나 샘플 코드를 기반으로 작고 (보통) 민감하지 않은 간단한 ID 속성 인 것처럼 보입니다.

+0

통찰력을 가져 주셔서 감사합니다! 이것이 StackOverflow가 멋진 이유입니다. – MADCookie

1

또한 웹 사이트 설치 방법에 따라 다릅니다. 다른 웹 응용 프로그램에서도 동일한 사이트에서 컨트롤을 다시 사용하는 경우에는 문제가되지 않습니다. 동일한 응용 프로그램에서 다시 사용하는 경우 이는 설계상의 문제가됩니다.

공유 호스트로 이동하면 세션 이름이 충돌할지 걱정해야하는지 묻는다면 걱정할 필요가 없습니다. 걱정할 필요가있는 것은 세션 InProc을 저장하는 경우입니다. InProc 값을 저장하는 중이고 사이트의 부하가 분산되어있는 경우 밸런서가 콘텐츠를 제공 할 다른 서버를 선택하면 문제가 발생할 수 있습니다.

관련 문제