2012-06-20 2 views
0

등록 프로세스의 일련의 단계를 통해 사용자를 실행하는 사용자 지정 Sharepoint 2010 웹 파트가 있습니다. 각 단계에서 필요한 입력이 완료되면 사용자는 표준 서버 측 버튼 컨트롤 인 계속 버튼을 클릭합니다. 이 코드는 업데이트 된 세션 데이터로 동일한 페이지를 새로 고치는 Response.Redirect를 호출하기 전에 유효성 검사와 DB 업데이트를 수행합니다.NLB 환경에서 Response.Redirect timeout

(참고 : 세션 데이터가없는 기존의 세션 객체에 의해 암호화 된 쿼리 문자열 매개 변수로 URL에 보관)

이 솔루션은 내 단일 서버 테스트 환경에서 잘 작동하지만 최대한 빨리 배포로 로드 밸런싱 단계 또는 프로덕션 환경으로 이동하려면 Continue (ERR_TIMED_OUT)를 클릭 한 후 응답을받지 않고 일부 요청을 시간 초과하면됩니다.

  1. 는 WebPart 로그는는 WebPart가 유효한 URL
  2. 이 더 서버 리소스 문제 없습니다와 Response.Redirect를 호출 사실에 있음을 보여줍니다. 제한 시간은 1 분 이상으로 설정할 수 있으며 응답을받지 못합니다. 나로드 밸런싱 및 서버 세션에 문제가 믿고 리드 - 나는 부하 균형 서버 중 하나에 등록 를 완료하면
  3. 모든 것이 잘 작동 분산 서버를로드하기 위해 배포 할 때
  4. 만 발생합니다. NLB의 서버 노드 중 하나에서로드 균형 조정 된 웹 응용 프로그램과 상호 작용할 때 모든 요청이 특정 서버로 이동한다는 것을 알고 있습니다.

나는 전에 비슷한 문제에 직면했다는 것을 알고 있지만, 몇 년 전만해도 해결책이 무엇인지 기억할 수 없다. Request.Url 특정 서버가 URL (http://internalServer44/myUrl 같은) 대신 외부에서 볼 수로드 균형 ULR을 (같은 http://NlbFarmUrl/myUrl) 보는 방법입니다

 try 
     { 
      // get clean URL without query string parameters 
      string url; 
      if (string.IsNullOrEmpty(Request.Url.Query)) 
       url = Request.Url.AbsoluteUri; 
      else 
       url = Request.Url.AbsoluteUri.Replace(Request.Url.Query, ""); 

      // add encrypted serialized session object 
      url += "?" + Constants.QueryStringParameterData + "=" + SessionData.Serialize(true); 

      _log.Info("Redirecting to url '" + url + "'.."); 
      Response.Redirect(url); 
     } 
     catch (Exception) { } 
+0

세션 데이터를 암호화하는 방법을 잘 모르겠지만 IIRC의 일부 암호화 방법은 '컴퓨터 키'에 의존하며 팜의 모든 서버에 대해 동일하지 않으면 다른 서버에서 읽을 수 없습니다.이것은 viewstate지만 동일하게 적용됩니다 - http://www.codinghorror.com/blog/2004/11/web-farms-and-aspnet-viewstate.html – Ryan

답변

1

확인을 클릭해도 문제가 해결되었습니다.

그것은 백그라운드에서 뭔가를하고 있었다 UAG 밝혀졌다, 내가 발견 한 방법은 트리거 링크는 포스트 백은

http://some_other_url.domain.com/uniquesigfed6a45cdc95e5fa9aa451d1a37451068d36e625ec2be5d4bc00f965ebc6a721/uniquesig1/sites/work/al2343/page.aspx

http://some_url.com/sites/work/al2343/page.aspx

변경되었다이었다

이 워싱턴을 (거기에서 "uniquesig"에주의하십시오) 브라우저가 실제로 리디렉션하려고 시도한 URL이지만 UAG와 관련된 문제가 무엇이든 탐색이 중단되었습니다.

어떻게 수정했는지는 모르지만 적어도 문제는 제 구성 요소에 없습니다.

0

하나의 가능성.

SharePoint의 경우 SPContext.Current.Site/Web 속성을 사용하여 URL의 기본 부분을 가져 오는 것이 더 좋습니다.이 URL은 이미 외부에서 볼 수있는 형식이어야하기 때문입니다.

+0

당신은 뭔가를 타고 있을지도 모릅니다. ! 감사! – Andreas

+0

요청은로드 균형 조정 된 도메인 이름 (http : //siteurl/page.aspx/data=querystringdata)으로 리디렉션되지만 보이지 않는 상황에서 발생할 수 있습니다. SPContext.Current.x는 모두 Request.Url과 동일한 URL을 제공하므로 불행히도 차이를 만들지는 않을 것이라고 생각합니다. – Andreas

+0

더 이상의 아이디어가 없습니다. 리디렉션 요청이 실제로 브라우저에서 서버에 도달하면 로그 파일을 확인하십시오. –