XML을 비 직렬화하는 동안 최근에 FileNotFoundException
이 산발적으로 발생하는 것을보기 시작했습니다. 메시지는 XML에서 코드로 매핑하는 데 사용 된 임시 어셈블리를 찾을 수 없다는 메시지입니다. this 문서에서 .NET Framework에서이 파일을 만들 수 없을 때 발생할 수있는 것처럼 보입니다 (그러나 내부 예외에서도 캡처되지 않은 이유가 있음). 여기 FileNotFoundException XML 역 직렬화시
Type : System.IO.FileNotFoundException, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Message : Could not find file 'C:\Documents and Settings\user\Local Settings\Temp\c5_nfoko.dll'.
파일 이름은 모든 오류에 차이가 있지만, 오류가 여기에서 유래, 항상 (하단에 전체 호출 스택) 동일합니다 :
at System.Xml.Serialization.XmlSerializer.GenerateTempAssembly(XmlMapping xmlMapping, Type type, String defaultNamespace)
at System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace)
at System.Xml.Serialization.XmlSerializer..ctor(Type type)
CSharpCodeGenerator
어셈블리를 생성하려고 할 때. 우리는 수년간이 코드를 생산 중에 사용 해왔고 매우 안정적이었습니다. 그것은 지난 주 정도에 막 실패하기 시작했습니다. 우리는 그것이 최신 운영 체제 인 Microsoft security patch과 관련이 있는지 궁금해했습니다. 여러 운영 체제 (XP 및 Server 2003)에서 .NET 2.0 및 .NET 4.0의 코드 버전에 영향을 미치기 때문입니다.
오류가 산발적이어서 프로세스를 다시 실행하면 보통 사라집니다. 이것은 파일을 검색하여 데이터베이스에 삽입하는 단일 스레드 명령 행 응용 프로그램입니다.
동일한 문제가있는 다른 사용자를 찾을 수는 없지만 같은 코드 줄에 격리되어 있지 않은 경우 System.Xml.Serialization
코드를 사용하는 두 곳의 장소가 있는데이 오류가 발생했습니다 각각에서. 이 코드는 우리가 최근에 변경 한 것이 아닙니다.
찾을 수있는 가장 가까운 다른 게시물은 this입니다.
QA VM에는 바이러스 스캐너가 없으므로 문제가되지 않는다고 생각합니다. 또한 호스팅 환경과 별도의 고객 사이트에서이 문제를 보았습니다.
우리는 시도 :
- 이 임시 디렉토리 임시 디렉토리에
- 검사 권한을
- 생성 XmlSerializers.dll의 sgen.exe를 사용하여 배포하여 (사용자가 상자에 로컬 관리자입니다) 정리 .NET Framework에서 이러한 어셈블리를 사용하지 않는 것처럼 문제가 지속됩니다.
누구든지 도움이 될만한 아이디어 나 제안이있는 경우.
전체 호출 스택 :
Type : System.IO.FileNotFoundException, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Message : Could not find file 'C:\Documents and Settings\user\Local Settings\Temp\c5_nfoko.dll'.
Source : mscorlib
Help link :
FileName : C:\Documents and Settings\user\Local Settings\Temp\c5_nfoko.dll
FusionLog :
Data : System.Collections.ListDictionaryInternal
TargetSite : Void WinIOError(Int32, System.String)
Stack Trace : at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at Microsoft.CSharp.CSharpCodeGenerator.FromFileBatch(CompilerParameters options, String[] fileNames)
at Microsoft.CSharp.CSharpCodeGenerator.FromSourceBatch(CompilerParameters options, String[] sources)
at Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromSourceBatch(CompilerParameters options, String[] sources)
at System.CodeDom.Compiler.CodeDomProvider.CompileAssemblyFromSource(CompilerParameters options, String[] sources)
at System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters xmlParameters, Evidence evidence)
at System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, XmlSerializerCompilerParameters parameters, Assembly assembly, Hashtable assemblies)
at System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location, Evidence evidence)
at System.Xml.Serialization.XmlSerializer.GenerateTempAssembly(XmlMapping xmlMapping, Type type, String defaultNamespace)
at System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace)
at System.Xml.Serialization.XmlSerializer..ctor(Type type)
.Net 4.0 직렬 파일을 읽는 .Net 2.0 앱에 영향을 줍니까? –
Windows 검색을 할 경우 .dll을 찾을 수 있습니까? 그렇다면 GAC가 될 수도 있고 copylocal 속성이 프로젝트에서 true로 설정 될 수도 있습니다. 2.0 및 4.0 용 GAC는 공유되지 않습니다. 별도의 GAC가 있습니다. – MethodMan
이 작업을 수행합니까? VM이 IO 바인딩 될 때 발생합니까? 예인 경우, 전에 본 적이 있습니다. 치료할 수는 없지만 해결 방법 -이 디스크의 일부 파일을 강제로 플러시하고 1ms 동안 기다리십시오. –