2009-02-02 2 views
4

2 개의 디렉토리 (책 및 내보내기)가있는 응용 프로그램이 있습니다. 응용 프로그램에서 책이나 책 페이지를 만들면 페이지 업로드 ID가있는 디렉토리가 추가됩니다 (리소스 업로드 용). 페이지를 삭제하면 해당 페이지 (및 해당 디렉토리)가 데이터베이스와 파일 시스템에서 제거됩니다.디렉토리를 삭제하면 응용 프로그램이 다시 시작됩니다.

그러나 이로 인해 세션이 손실되었습니다 (응용 프로그램을 다시 시작한 경우에도). 나는 구글에서 어떤 것을 찾아 보았고 다음을 발견했다 link. ASP.NET 2.0 (및 3.5)에서 문제가되는 것 같습니다. 누구나이 문제에 대한 해결책이 있습니까?

이제 우리는 밤에 디렉토리를 정리할 서비스를 작성하려고합니다. 하지만이 솔루션에는 다른 솔루션이 필요합니까? 아, 가상 디렉터리 외부에 디렉터리를 두는 것은 옵션이 아닙니다.

답변

5

오우 및 디렉터리를 외부에 배치하면 가상 디렉터리가 옵션이 아닙니다.

가상 디렉터리 외부에 디렉터리를 두는 것이 유일한 솔루션입니다 (지금까지). 할 수있는 일은 디렉터리가 가상 디렉터리 내에있는 것처럼 파일 시스템에 링크 (교차점)를 만드는 것입니다. 예 :

  • 웹 사이트 (가상 디렉터리)는 C : \ projectX \ website
  • 데이터 디렉토리 (파일 및 폴더를 생성/삭제하는 곳)는 C : \ projectX \ data에 위치합니다.
  • 그러면 데이터 폴더를 C : \ projectX \ website \ 데이터

링크는 프로그램 Linkd.exe를 사용하여 만듭니다 (Windows 리소스 ki에서 사용 가능). 다음 명령을 t) :

linkd c:\projectX\website\data c:\projectX\data 

이제 C : \ projectX \ 웹 사이트 \ 데이터는 실제 데이터 디렉토리를 가리키는 링크/접합이다. 물리적 인 디렉토리처럼 링크로 작업 할 수 있습니다.

예.

Server.MapPath("~/data") 

을 그리고 당신은 또한 윈도우 파일 탐색기를 사용 할 수 있으며 C로 이동합니다 : 귀하의 웹 사이트에이 코드를 사용하여 액세스 할 수 있습니다 \ projectX \ 웹 사이트 \ 데이터를. 실제 디렉토리처럼 나타납니다.

1

동일한 문제가있었습니다. 해결 방법은 ASP.Net State 서비스를 사용하여 세션 처리를 외부화하는 것입니다. 유일한 단점은 세션에 배치 한 모든 객체가 상태 서비스로 다시 전송되기 때문에 직렬화가 가능해야한다는 것입니다.

현재 추가 링크를 제공 할 수는 없지만 검색 할 항목을 알면 Google이 도움이 될 것입니다.

6

파일 시스템 모니터링을 비활성화하십시오. 이렇게하면 세션이 정지되지 않습니다. This article이 유용 할 수 있습니다.

1

Sachin이 언급 한 기사 (웹 사이트에서 파일 변경 알림 기능을 해제)와 동일한 기능을하는 핫픽스가있는 것 같습니다.

자세한 내용은 this article in the microsoft KB을 확인하십시오.

하지만 의견에 언급 했으므로 서버에 액세스 할 수 없다는 점에서 귀하의 경우에도 도움이되지 않습니다.

1

자주 업데이트되고 생성되고 삭제되는 데이터 파일을 저장하려면 웹 사이트의 루트에 App_Data 폴더를 사용해야합니다. App_Data 폴더 상태에 대한 MSDN가 :

가, MDF 파일, XML 파일을 포함하여 응용 프로그램 데이터 파일 을 포함 아니라 다른 데이터 저장소 파일로. App_Data 폴더는 ASP.NET 2.0 에서 응용 프로그램의 로컬 데이터베이스를 저장하는 데 사용되며 구성원 이름과 역할을 유지하는 데 사용할 수 있습니다 정보. 또한

Q & App_Data 폴더를 사용하는 부 체크 : App_Data folder question