2010-06-17 2 views
1

구성과 관련된 문제가 있습니다.Server.TransferRequest가 특정 서버에서 빈 페이지를 반환합니다.

MonoRail의 라우팅 기능을 사용하는 MonoRail을 기반으로하는 웹 응용 프로그램이 있습니다. 응용 프로그램이 시작된 후 첫 번째 요청에서 라우팅이 초기화되지 않습니다. 이 문제를 회피하기 위해, 내가) (Application_OnError에 다음 코드를 가지고 :

public virtual void Application_OnError() 
{ 
    if (// identified as routing error) 
    Server.TransferRequest(Context.Request.RawUrl, false); 
    return; 
} 

(IIS 7.5 및 .NET 3.5, 서버 2008 R2를 실행) 헤더없이 빈 페이지를 반환 문제 우리의 개발 서버에 그 beeing는, 하지만 내 워크 스테이션 (win7, IIS 7.5 및 .NET 3.5 실행)에서 제대로 작동합니다.

무엇이 원인 일 수 있습니까? Application_OnError()의 코드가 예외를 throw하면 예상되는 출력은 무엇입니까?

나는 확인한 다음

  • 응용 프로그램이 실제로 어떤을 성공적으로 호출 할 때 TransferRequest 두 번째 항목으로 표시 할 경우

    • 액세스 로그가 하나 개의 항목을 보여줍니다, 잘 모르겠어요 내 내부 로그에 따라 작동하며 후속 요청이 완벽하게 작동하므로 (라우팅이 활성화되기 때문에) 아무 것도 죽지 않습니다.

    찾을 수있는 힌트가 있으면 대단히 감사하겠습니다.

  • 답변

    1

    서버 설치의 응용 프로그램 풀이 통합 파이프 라인을 사용하도록 구성되어 있습니까? Server.TransferRequest이 작동하려면 필요합니다. IIS 7.0에 통합 파이프 라인 모드로 실행하는 경우에이 방법을 사용하여 대상 요청을 실행하는 동안 요구 처리가 다른 하나 개의 자원 유형으로 전송 될 수 있도록 을 사용

    : MSDN 문서에서

    올바른 요청 문맥.

    +0

    좋은 제안이지만, 응용 프로그램 풀이 통합되어 있으므로 미안합니다. – jishi

    0

    첫 번째 요청에 맞게 라우팅을 등록하려면 Application_OnStart() 중에 라우팅을 설정해야 할 수 있습니다.

    http://www.castleproject.org/monorail/documentation/trunk/advanced/routing.html
    http://www.kenegozi.com/blog/2009/02/10/monorail-routing-and-the-homepage-routing-rule.aspx

    어디 당신은 지금 경로를 등록해야합니까?

    추가 제안

    여기 CompleteRequest 및 URL 재 주변에서 외모에 대한 몇 가지 더있어 :
    http://msmvps.com/blogs/luisabreu/archive/2007/10/09/are-you-using-the-new-transferrequest.aspx
    http://support.microsoft.com/kb/817036

    한 가지 제안을 대신 Request.Redirect을 시도하는 것입니다.

    +0

    나는 그것들을 Application_OnStart()에 오늘 등록했는데, 응용 프로그램이 시작되기 전에 RoutingModuleEx가 실제로 호출되는 첫 번째 요청에 glith가 있다고 생각합니다. 따라서 첫 번째 요청을 다시 쓰지 않습니다. 코드에서가 아니라 web.config에서 경로를 정의 할 때만 올바르게 작동한다고 생각합니다. – jishi

    +0

    저는 왜 우리가 Server.TransferRequest를 사용했는지 기억하지 못합니다.하지만 방문자에게 투명하게 보이도록하는 것이었지만 여전히 사용 가능한 모든 모듈을 통해 요청을 보류하고 있다고 생각합니다. Response.Redirect는 아마도 작동 할 것입니다.하지만이 작업은 "내 컴퓨터에서 작동합니다." – jishi

    1

    난 던져 오류가 있다고 생각하지만 페이지가 모두 다른 오류 에 준비되어 있고 그 방법으로 캡처해야하므로입니다.이후 TransferRequest의 내 수표에서 많은 사람들이 오류를 범할 수 있으므로 실제 문제를 찾을 수 있습니다.

    public virtual void Application_OnError() 
    { 
        if (identified as routing error) 
        { 
         try 
         {  
          Server.TransferRequest(Context.Request.RawUrl, false); 
         } 
         catch(Exception x)  
         { 
          LogTheError(x.ToString()); 
         } 
        } 
    
        return; 
    } 
    
    +0

    감사 드리겠습니다. – jishi

    0

    살펴볼 것은 Server.ClearError()입니다. 파이프 라인과 오류가있는 Windows 7과 Server 2008의 몇 가지 중요한 변경 사항이 있습니다. 목록의 항목 번호 21에서

    http://mvolo.com/blogs/serverside/archive/2007/12/08/IIS-7.0-Breaking-Changes-ASP.NET-2.0-applications-Integrated-mode.aspx

    봐.

    이것이 문제가되는지는 확실치 않지만 확인해 볼 가치가있는 것으로 보입니다.

    +0

    흠,하지만 내 dev-machine은 Win 7 (작동)이고 stage-server는 2008 R2 (실패)입니다. 나는이 버전들이 거의 동일해야한다고 생각하니? – jishi

    +0

    나는 2008 R2와 Win 7 사이에서 잡히지 않았을 것으로 추측하고 있습니다. 2008 년 머신 (R2가 아닌)을 사용해보고이 문제가 계속 발생하는지 살펴 보는 것이 흥미로울 수 있습니다. 나는 아마 너를 추측하고있다. – spinon

    관련 문제