2010-12-09 2 views
16

내 ASP.NET 응용 프로그램이 4 개의 별도 데이터베이스 호출을한다고 가정합니다. 두 번째 호출 후 BIN 폴더의 DLL을 덮어 쓰면 응용 프로그램이 처리를 계속할 수 없으므로 3 번째 및 4 번째 데이터베이스 호출이 실패합니다.DLL을 덮어 쓰면 ASP.NET 응용 프로그램이 실행을 중지합니까?

어떤 조언을 크게 감상 할 수있다, MOSH는

답변

45

ASP.NET은 DLL 및 ResX 파일을 비롯한 다양한 리소스에서 섀도 복사본을 수행합니다. 파일이 프레임 워크에 의해 액세스되면 잠겨서 직접 액세스하지 못합니다. 루트/bin 또는 root/App * _Resources (예 :) 내에 파일을 잠그지 않도록하기 위해이 리소스를 미리 지정된 디렉토리에 복사합니다.

[편집]

C와 같은 뭔가
미리 정해진 디렉토리 기본값 : \ WINDOWS \ Microsoft.NET 프레임 워크 \ \ v4.0.30319 임시 ASP.NET 파일 \ \ 데모 1 \ 9b9144a7 \ 8665ac07 데모 1은 친숙한 이름에 대해 해시 (I 가정)이 응용 프로그램의 이름과 중첩 된 디렉토리입니다

포함 된 리소스에 대한 AppDomain

예를 들어 Michelle Bustamante가 작성한 MSDN의 리소스 공급자 예제에서 dbresourceproviderweb이라는 디렉터리가 있습니다. 그 디렉토리 안에는 두 개의 폴더가 있습니다 : c8b872e2와 7fc33f08. 더 이동하려면, 에콰도르 스페인어 컴파일 된 자원 을 받고있다 ... \ dbresourceproviderweb \ c8b872e2 \ 97074f76 \ ES-EC... \ dbresourceproviderweb \ 7fc33f08 \ ac65ebd3 \ ES-EC
[/ 편집]

여기에 설명 된대로 위해 Application_Start에서이 디렉토리를 변경할 수 있습니다

: AssemblyResolve event is not firing during compilation of a dynamic assembly for an aspx page

당신은 Web.config의 그림자 복사를 해제 할 수 있습니다

<hostingEnvironment shadowCopyBinAssemblies="false" />

섀도 복사 된 파일 중 하나가 응용 프로그램 내에서 업데이트되면 새 AppDomain이 생성되고 현재 요청 된 AppDomain의 요청은 모든 새 요청이 새 AppDomain으로 전달되는 동안 완료 될 수 있습니다. http://msdn.microsoft.com/en-us/library/ms404279.aspx

Edit2가 : 난 그냥 당신이 응용 프로그램 도메인을 산란 파일 복사 작업 사이의 시간의 필요한 길이를 수정할 수 있다는 것을 알게

그림자 복사 및 응용 프로그램 도메인에 대한 자세한 내용은 MSDN의 기사를 확인하십시오.

시스템.web/httpRuntime 요소에서 waitChangeNotificationmaxWaitChangeNotification을 지정하면 새 AppDomain이 복사 된 모든 파일에 대해 생성되지 않습니다. MSDN을 참조하십시오.

MSDN에서이 동작에 대한 예제가 실제로 없지만 HttpRuntime의 구성 가능성에 대한 참조로 보관하는 것이 좋습니다.

+0

방금 ​​AppDomain이 생성되기 전에 파일 복사본 간의 지연을 수정할 수 있음을 발견했습니다. –

+0

나는이 .net 지연을 알고 있으며, 우리가 할 수있는 일이 없다고 가정하고, 기사가 그렇게 잘 설명해줍니다! 큰! – visual

2

어셈블리를 앱 도메인에로드하고, 응용 프로그램 도메인을 사용하여 어셈블리를 교체 할 경우이 응용 프로그램을 재활용하고 어셈블리를 다시로드, 디렉토리를 감시합니다. 네, 네 번째/네 번째 전화가 실패합니다.

+1

나는 그 디렉토리가 IIS 자체가 아니라 asp.net의 ISAPI dll (AppDomain)에 의해 감시 된 것으로 생각했다. 디렉토리에 관한 IIS 관련 리소스가 있습니까? –

+1

나는 커피를 마시지 않았다. 너는 옳았다. AppDomain에서 감시합니다. – Phill

관련 문제