2014-02-14 2 views
5
나는 RouteTable에 동적으로 경로를 추가하고 있지만, 업데이트가 다른 프로세스에 전파되지

:추가 동적 경로

using (RouteTable.Routes.GetWriteLock()) 
{ 
    RouteTable.Routes.MapPageRoute(
     String.Format("_{0}", routeName), 
     routeName, 
     "~/Template.aspx", 
     true, 
     new RouteValueDictionary {{"page", routeName}}); 
} 

을이 올바르게 올바른 경로를 만들고, 가끔 액세스 할 수 있습니다로 ,하지만 새 프로세스로 전환하거나 나중에 조금만 시도하면 페이지에 액세스 할 수 없습니다. 다음 응용 프로그램 풀을 다시 시작하면 제대로 작동합니다. 또한 내가 충분히 오랫동안 기다렸다가 몇 시간 후에 프로세스가 재활용되면 경로가 작동합니다.

이것은 하나의 프로세스에서 생성되는 경로의 결과이며 앞으로의 프로세스 재생시에만 발생한다고 생각합니다.

경로 업데이트를 푸는 방법에 대한 아이디어가 있습니까?

답변

1

문제는 의 구현과 같다고 생각합니다. 우리가 볼 수 있듯이 here - RouteTable.Routes은 정적입니다. 그래서 여기서의 문제는 루트가 모든 프로세스로 전파되지 않는 것이 아니라 웹 가든 문제에서 정적 변수가 더 많은 이유입니다.

해결 방법을 생각해 볼 때, 클러스터에서 웹 가든 프로세스/웹 서버간에 공유 캐시와 유사한 솔루션을 제안 할 수 있습니다. 동적 경로 OutProc의 목록을 DB 또는 정적 파일로 가져와야합니다. 그런 다음 코드에서 변경을 위해 이러한 파일을 추적하고 외부 리소스에 추가 할 때 새 경로를 추가해야합니다.