[asp.net] 파일이나 어셈블리 또는 해당 종속성 중 하나를로드 할 수 없습니다. 접근이 금지되어있다. 문제는 무작위이지만 한 번 발생하면 계속됩니다.

이 오류에 대한 많은 정보를 찾았습니다. ‘오류 : 파일 또는 어셈블리’* .dll ‘또는 해당 종속성 중 하나를로드 할 수 없습니다. 접근이 금지되어있다.’ 하지만 내 시나리오에 특정한 답을 찾지 못했습니다. 내 사이트는 6 개의 서로 다른 프로덕션 서버에 배포되며 하나의 서버에만이 문제가 있습니다. 문제는 무작위이지만 한 번 발생하면 web.config 파일에서 약간의 수정을 수행하여 사이트가 다시 컴파일 될 때까지 계속됩니다 (web.config에서 수정 한 후 웹 응용 프로그램을 다시 컴파일합니다) 및 해당 서버에서 사이트 시작 일. 어제 한 달간 작업 한 후 문제가 재현되었습니다. 우리는 생산에이 문제를 감당할 수 없습니다.
문제 세부 정보 :

‘/’응용 프로그램에 서버 오류가 있습니다.
____________________________________
파일 또는 어셈블리 ‘MainCore.DbImpl, Version = 0.0.0.0, Culture = neutral, PublicKeyToken = null’또는 해당 종속성 중 하나를로드 할 수 없습니다. 접근이 금지되어있다. 설명 : 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 오류가 발생한 위치에 대한 자세한 내용은 스택 추적을 검토하십시오.

예외 정보 : System.IO.FileLoadException : 파일 또는 어셈블리 ‘MainCore.DbImpl, Version = 0.0.0.0, Culture = neutral, PublicKeyToken = null’또는 해당 종속성 중 하나를로드 할 수 없습니다. 접근이 금지되어있다.

소스 오류 : 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 생성되었습니다. 아래의 예외 스택 추적을 사용하여 예외의 출처 및 위치에 대한 정보를 식별 할 수 있습니다.

어셈블리로드 추적 : 다음 정보는 ‘MainCore.DbImpl, Version = 0.0.0.0, Culture = neutral, PublicKeyToken = null’어셈블리를로드 할 수없는 이유를 확인하는 데 도움이 될 수 있습니다.

WRN : 어셈블리 바인딩 로깅이 꺼져 있습니다. 어셈블리 바인딩 실패 로깅을 사용하려면 레지스트리 값 [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD)를 1로 설정하십시오. 참고 : 어셈블리 바인딩 실패 로깅과 관련된 성능 저하가 있습니다. 이 기능을 해제하려면 레지스트리 값 [HKLM \ Software \ Microsoft \ Fusion! EnableLog]를 제거하십시오.

스택 추적 :

[FileLoadException : 파일 또는 어셈블리 ‘MainCore.DbImpl, Version = 0.0.0.0, Culture = neutral, PublicKeyToken = null’또는 해당 종속성 중 하나를로드 할 수 없습니다. 액세스가 거부되었습니다.] … root \ SportChannel의 … DbImpl.Event.TTCEventController.GetEventFields (Int32 eventId) +0 WebSuite.SportChannel.ModelImpl.TTCModelController.AddEventFieldList (XmlElement eventNode, ITTCEventController ctrl, Int32 eventId, PlayerType stupidType) \ ModelImpl \ Ttc \ TTCModelController.cs : 171 … root \ SportChannel \ ModelImpl \ Ttc \ TTCModelController.cs : 283의 … ModelImpl.TTCModelController.GetLatestFourTourSchedulesXml () … WebRoot.UserControls.HeadlinesTab.Page_Load (개체 발신자 , EventArgs e) +491 System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp, Object o, Object t, EventArgs e) +25 System.Web.Util.
____________________________________

버전 정보 : Microsoft .NET Framework 버전 : 2.0.50727.5446; ASP.NET 버전 : 2.0.50727.5420



답변

내 시나리오의 경우 web.config 파일에 ID 노드가 있음을 발견했습니다.

<identity impersonate="true" userName="blah" password="blah">

노드에서 userName 및 password 매개 변수를 제거하면 작동하기 시작했습니다.

또 다른 옵션은 지정된 userName이 다양한 C : \ Windows \ Microsoft.NET \ Framework {version} 폴더에있는 “Temporary ASP.NET Files”폴더에 대한 작업에 액세스 할 수 있는지 확인해야하는 것입니다.

이것이 다른 사람을 도울 수 있기를 바랍니다!


답변

동일한 문제가 있었지만 “32 비트 응용 프로그램 사용” 매개 변수 를 “true”로 설정하여 수정했습니다 (iis 응용 프로그램 풀의 고급 설정에서).


답변

내 솔루션은 다음과 같습니다.

에서 루트 폴더를 찾지 못했습니다 C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files.

Google은 현재 사용자에 대한 권한 문제 일 수 있다고 말한 다음 현재 ID가 있음을 발견 IIS APPPOOL했습니다. 서버의 나머지 부분에 현재 ID 가있는 오작동하는 서버에서 NT AUTHORITY\NETWORK SERVICE.

그런 다음 Current Identity를 IIS APPPOOL에서 NT AUTHORITY\NETWORK SERVICE.

여기에서 웹 앱을 재설정하면 임시 ASP.NET 캐시가 다시 작성되어 문제가 해결된다는 것을 알았습니다.


답변

대부분의 솔루션을 시도했지만 여전히 문제가있는 다른 사람에게.

내 솔루션은이 게시물의 맨 아래에있는 다른 솔루션과 다르지만 시도하기 전에 다음 목록을 모두 사용했는지 확인하십시오. 확실히, 나는 그들 모두를 시도했지만 아무 소용이 없습니다.

  1. 처음부터 다시 컴파일하고 재배포하고 기존 앱을 업데이트하지 마세요. 그래서 대답

  2. IIS_IUSRS에게 “C : \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files” 디렉터리에 대한 전체 액세스 권한을 부여합니다 .

    사용중인 프레임 워크 버전을 기억하십시오. 앱에서 가장을 사용하는 경우 IIS_IUSRS 대신 해당 ID를 사용하십시오.

  3. “C : \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files” 디렉토리의 모든 내용을 삭제합니다 .

    사용중인 프레임 워크 버전을 염두에 두십시오.

  4. 앱에서 사용중인 AppPool의 ID를 ApplicatonPoolIdentity에서 NetworkService로 변경하십시오.

    IIS> 애플리케이션 풀> 현재 앱 풀 선택> 고급 설정> ID.

    그래서 대답 (작동하지 않으면 기본값으로 복원하십시오)

  5. 앱과 IIS 버전 및 AppPool .NET 버전 호환성을 확인하십시오. 최초 배포에 매우 적합합니다. 그래서 대답

  6. 해당되는 경우 가장 구성을 확인합니다. 그래서 대답

내 솔루션 :

특정 안티 바이러스 소프트웨어가 “Temporary ASP.NET Files” 디렉토리 내의 DLL 컴파일을 적극적으로 차단하고 있다는 사실을 알게되었습니다 . 저의 경우 McAfee였습니다. IT 담당자는 설치 사실을 알려주지 못했습니다.

McAfee 전문가와 Microsoft의 조언 에 따라 실시간 검색에서 “Temporary ASP.NET Files” 디렉터리를 제외해야합니다 .

출처 :

안티 바이러스는 작업 만 수행하므로 비활성화하지 마십시오. \ Temporary ASP.NET Files {project name} 디렉토리에 누락 된 DLL 파일을 수동으로 복사하지 마십시오 . 이는 덕트 테이핑이기 때문입니다.


답변

가장을 사용 하는 경우 다음 폴더의 관련 사용자 계정에 쓰기수정 권한을 포함한 권한을 부여해야 합니다.

C:\Users\[username]\AppData\Local\Temp\Temporary ASP.NET Files

수정 권한이 없어서 기본 권한을 추가하는 것만으로도 효과가 없었습니다.


답변

여전히 문제가 발생하면 다음을 시도하십시오.

IIS 관리자 열기-> 응용 프로그램 풀-> 앱 풀 선택-> 고급 설정-> ‘프로세스 모델’에서 ‘사용자 프로필로드’설정을 True로 설정합니다.

여기에 이미지 설명 입력


답변

나는 그것을 조사하는 데 1 일처럼 낭비되었다고 생각하며 이것이 내가 얻은 것입니다.

프레임 워크가이 위치에서 DLL에 액세스하고 Temporary Asp.Net 폴더에 배치하므로 가장 사용자를 솔루션의 디버그 폴더에 추가해야합니다.

따라서 기본적으로 다음 두 단계를 따르십시오.

  1. 아래의 Temporary Asp.Net Folder에 대한 권한을 부여 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files하고 여기에 추가하는 사용자가 가장하는 동안 사용하는 것과 동일한 지 확인하십시오.

  2. 솔루션 YourSolutionPath .. \ bin \ Debug의 디버그 폴더에 가장 사용자를 추가하십시오.

이것은 작동합니다