XMLをデシリアライズしているうちに、最近FileNotFoundException
が散発的にスローされています。メッセージは、XMLからコードへのマッピングに使用された一時アセンブリが見つからないというメッセージです。 this文書から、このファイルが.NET Frameworkによって作成されない場合に発生する可能性があります(内部例外でもキャプチャされない理由があります)。ここでXMLのデシリアライズ時にFileNotFoundExceptionが発生しました
は例外です:
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のコードのバージョンに影響するため、最新のMicrosoft security patchと何か関係があるかどうかは疑問でした。
エラーは散発的で、通常はプロセスを再実行すると、通常は消えます。これは、ファイルを取得してデータベースに挿入するシングルスレッドのコマンドラインアプリケーションです。
同じ問題を抱えている人は誰も見つかりませんでしたが、同じコード行には分かれていません。System.Xml.Serialization
コードを使用する場所が2つあり、このエラーが発生していますそれぞれから。このコードは、私たちが最近変更したものでもありません。
最も近い他の投稿はthisです。
私たちのQA VMでは、ウイルススキャナはありませんので、問題はないと思います。この問題は、ホスティング環境と別のクライアントサイトの両方で発生しています。
我々は試してみました:
- をこの一時ディレクトリをクリーンアップ
- tempディレクトリのパーミッションを確認する(ユーザーがボックスにローカル管理者である)
- 生成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を持っていますFY12 – MethodMan
VMがIOバインドされているときに発生しますか?はいの場合、私は前にこれを見てきました。いいえ、治療法はありませんが、回避策 - このディスク上のファイルを強制的にフラッシュし、1ms待ってください。 –