2009-11-02 6 views
1

내 상황은 다음과 같습니다. 확장/축소/편집이 가능한 TreeView 컨트롤이있는 웹 페이지를 갖게됩니다. 지금까지 좋은 모든 것. 나는이 포스트 백이이 컨트롤에 많이 사용되어 생산 환경에 특유한 또 다른 문제를 일으킨다는 것을 안다.TreeView 및 Postback

여기에로드 밸런서가 2 개 있고로드 밸런서가 제대로 작동하지 않으며 불행히도 페이지가 동일한 웹 서버에 제출 될 것이라고 보장 할 수 없습니다. 즉, 세션에서 사용자가 누구인지 기억하지 못하거나 세션에 저장된 모든 변수 (예 : treeview viewstate)가 손실 될 수있는 상황이 발생할 수 있습니다.

내 treeview가 항상 동일한 서버에 다시 게시되도록해야합니다. 내 솔루션은 페이지가 처음으로로드 된 때 웹 서버의 IP 주소를 얻고로드 균형 조정기를 우회하기 위해 해당 IP를 가리 키도록 모든 링크/단추를 다시 작성합니다. 문제는 treeview에서 발생합니다. 동일한 IP 주소로 항상 다시 게시되도록하려면 어떻게해야합니까?

감사합니다.

답변

1

Viewstate는 세션 변수가 아닌 폼에 저장됩니다. 페이지의 html 소스를 살펴보면 "_viewstate"숨겨진 양식 필드가 표시됩니다.

카시니를 사용하여 로컬 컴퓨터에서이 문제를 해결하려고 시도해보십시오.

또한 세션 변수를 피해야하는 또 다른 예입니다. 세션에 저장된 내용은 모두 이어야하며이 살아야하는 데이터베이스에 저장할 수 있습니다.

+0

저는로드 밸런싱 환경을 다루고 있다는 것이 가장 큰 문제라고 생각합니다. 모든 의도와 목적을 위해 viewstate와 세션 상태는로드 균형 조정기가 잘못 구성된 경우에도 동일한 문제를 발생시킵니다. – gn22

+0

^^ 기본적으로 세션, viewstate 또는 다른 무엇이든간에 서버에 아무것도 저장할 수 없습니다. 기본적으로 내 페이지가 동일한 서버에 다시 게시된다는 보장이 없으므로 서버에 전혀 의지 할 수 없습니다. – sarsnake

+0

적절한 설정으로 세션 변수를 잘 사용할 수 있습니다. 이것은 지금 잠시 동안 업계 표준이었습니다. 시나리오에 따라 다르다고 생각합니다. 페이지가로드 될 때마다 데이터베이스를 방문해야하는 경우가있을 수 있는데, 이는 큰 문제가 될 수 있습니다. 제대로 구성된로드 밸런서와 세션 바는 함께 잘 처리됩니다. – sarsnake

1

여기에 대한 대답은로드 밸런서 상황을 해결하는 것이며 주변을 해킹하지 않는 것입니다.

우선, Viewstate는 완전히 양식 데이터로 서버에 다시 게시되므로 세션 데이터와 같이 본질적으로 문제가되지는 않습니다. 즉, 서버가 올바르게 설정되면 교차 서버 포스트 백을 성공적으로 수행하고 Viewstate를 유지할 수 있습니다. 컴퓨터 키 공유 또는 Viewstate 키잉을 비활성화하는 방법에 대해서는 Jeff Atwood's blog entry을 참조하십시오.

in-proc 세션에서는 당연히 그렇게 할 수 없으므로 여전히 거래 차단기가 될 수 있습니다. 당신이 정말해야 할 것은 다음 중 하나

  • 구성하여 모든 요청은 웹 서버간에 공유 동일한 서버
  • 를 사용하여 SQL 세션이나 다른 상태의 서버로 이동 세션 선호도를 지원하는 부하 분산
+0

예, 커트 고침해야 할 필요가 있습니다. 불행히도 이것은 나의 책임이나 전문성이 아니기 때문에이 모든 상황이 나를 매우 동요시키고 있습니다. 나는 어떻게 든 서버에 의존하지 않고 서버 측 코딩을 할 것으로 예상된다. – sarsnake

+0

기분이 어떤지 압니다 ...나는 당신이 서버를 서로 다른 viewstate를 받아들이고 다른 세션 레벨 데이터를 자신의 db 스토리지/검색에로드 할 수 있다면이 문제를 해결할 수 있다고 생각한다. –

+0

감사합니다 :) 나는 그것이 실패의 단일 지점이기 때문에 내가 세션에 대한 DB 스토리지를 사용할 수 없다는 말을 들었습니다. 재미 있니? – sarsnake