6

나는 일주일에 한 번씩 Microsoft.Practices.EnterpriseLibrary.Data dll을로드하는 데 문제가있는 다소 단순한 내부 ASP.Net 웹 사이트를 가지고 있습니다. 노트의왜 System.IO.FileLoadException가 발생합니까 : ASP.Net 웹 사이트에서 일주일에 한 번 파일 또는 어셈블리를로드 할 수 없습니까?

System.IO.FileLoadException: Could not load file or assembly 'Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Access is denied. 
File name: 'Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' 
    at foobar.Intranet.Logic.Data.UserDB.SelectByUserName(String userName) 
    at foobar.Intranet.Logic.Info.User.ValidateUser(String userName) in F:\Development\foobar\foobar\foobar.Intranet.Logic\Info\User.cs:line 130 
    at Login.ValidateUser(String username, String password) in e:\foobar\foobar.Intranet\Login.aspx.cs:line 32 

=== Pre-bind state information === 
LOG: User = Unknown 
LOG: DisplayName = Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null 
(Fully-specified) 
LOG: Appbase = file:///E:/foobar/foobar.Intranet/ 
LOG: Initial PrivatePath = E:\foobar\foobar.Intranet\bin Calling assembly : foobar.Intranet.Logic, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. 
=== 
LOG: This bind starts in default load context. 
LOG: Using application configuration file: E:\foobar\foobar.Intranet\web.config 
LOG: Using host configuration file: \\?\C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet.config 
LOG: Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config. 
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind). 
LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/foobar.intranet/668896d8/82d7e51c/Microsoft.Practices.EnterpriseLibrary.Data.DLL. 
LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/foobar.intranet/668896d8/82d7e51c/Microsoft.Practices.EnterpriseLibrary.Data/Microsoft.Practices.EnterpriseLibrary.Data.DLL. 
LOG: Attempting download of new URL file:///E:/foobar/foobar.Intranet/bin/Microsoft.Practices.EnterpriseLibrary.Data.DLL. 
ERR: Failed to complete setup of assembly (hr = 0x80070005). Probing terminated. 

것 : : 간단한 IIS 리셋이 문제를 해결

  • 여기에 예외 메시지입니다.
  • 단일 웹 서버에서 동일한 코드를 실행해도 문제가 없습니다. 그런 다음 사이트를 새로운 두 개의 부하가 분산 된 (끈끈한 세션 사용) 웹 서버 (세 가지 Windows Server 2003 R2 Standard Edition SP1)로 옮겼습니다. 이제 각로드 균형 조정 웹 서버는이 예외 사항을 일주일에 한 번 파란색에서 꺼냅니다.
    • 내가 생각할 수있는 가장 큰 차이점은 부하 분산 서버에 4.0 .NET Framework를 설치했기 때문입니다. 이 웹 사이트는 여전히 ASP.NET 2.0에서 실행되므로이 ​​문제가 어떻게되는지는 알 수 없습니다.
  • "Temporary ASP.NET Files"폴더를 검색하지 않도록 인덱싱 서비스를 구성했지만 수행하지 못했습니다. 도와주세요.
  • 우리 사이트의 모든 곳에서 Microsoft.Practices.EnterpriseLibrary.Data dll을 사용합니다. 거의 모든 단일 페이지는 우리의 로직 DLL을 사용하며,이 DLL은 엔터프라이즈 라이브러리 dll을 사용합니다.
  • 오류가 한 번 발생하는 동안 "임시 ASP.NET 파일"폴더에서 프로세스가 dll을 잠그는 것을 보았습니다. 정상적으로 작동하는 서버의 잠금과 다른 것은 아닙니다. iisreset을가

어떤 통찰력의 사람이 많이 주시면 감사하겠습니다 제공 할 수있는 수행 될 때까지

  • 오류는 오류, 매번 시작되면. 내가 뭔가를 놓친다면 알려줘.

    감사합니다.

    +0

    일단이 문제가 발생하면 어셈블리 호출이 위의 오류 메시지와 함께 실패합니다 (iisreset 수행됩니다. –

    +0

    Tuzo - 귀하의 가정은 정확합니다. 문제가 시작되면 어셈블리를로드하는 모든 호출이 실패합니다 (iisreset이 수행 될 때까지). – Daryl

    +0

    흥미로운 사실 ​​중 하나는 IIS 디렉터리 보안, 익명 액세스 사용자가 IUSR_MachineName이 아니라 IUSR_OldMachineName이라는 것입니다. 이후 관리자 사용자 및 그룹에서 사용자 이름을 업데이트했지만 IIS 익명 사용자 계정을 수동으로 업데이트해야했습니다. 그게 영향을 미칠지 누가 알겠습니까? – Daryl

    답변

    3

    Assembly Binding Log Viewer을 살펴보십시오. 그것은 올바른 방향으로 당신을 가리킬 수도 있습니다.

    다른 답변에 대한 간략한 살펴 보았습니다. 한 사람은 응용 프로그램이 DLL의 서명 된 버전에 대해 개발되었지만 프로덕션 런타임은 서명되지 않은 버전에만 액세스 할 수 있다고 제안했습니다. 제작물에 부호없는 어셈블리 (PublicKeyToken=null)가로드되어있는 것 같습니다.

    +0

    Assembly Binding Log Viewer를 열었지만 아무 것도 나타나지 않았습니다. 로그의 위치를 ​​사용자 지정 위치로 업데이트하여 로그를 지우지 않았습니다. "=== 사전 바인드 상태 정보 ==="뒤에 예외 메시지와 동일한 정보를 줄 것이라고 추측하고 있습니다. "이번에 참조하기 위해 적용되지 않는 정책"과 관련이 있는지 궁금합니다. 생산 및 개발 모두 서명되지 않은 코드를 사용하고 있습니다. 그리고 사용자가 설명하는 문제는 매주 한 번씩 발생하는 것이 아니 었습니다. – Daryl

    0

    설치 아래 nuget 패키지 :

    설치 패키지 log4net -Version 2.0.0 설치 - 패키지 linqtoexcel

    설치 패키지 System.Data.Sqlite.x86 -Version 1.0.88.0 설치 - 패키지 ServiceStack - 버전 3.9.71 설치 패키지 ServiceStack.OrmLite.Sqlite32 - 버전 3.9.71

    관련 문제