.net序列化与反序列化错误,可能是Local Settings\Temp不存在引起

今天我在更改了WEBSERVICE接口之后,需要将调用者机器上的临时WS文件删除(否则调用者接口还是以前的),我为了省事就将

C:\Documents and Settings\Administrator.ZJZX\Local Settings\Temp整个目录直接删掉了;

结果发现很多软件无法使用,发现以下错误:

XML反序列化为对象失败。 ---> System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Documents and Settings\Administrator.ZJZX\Local Settings\Temp\_qhbt52c.tmp'.
   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)
   at System.CodeDom.Compiler.TempFileCollection.EnsureTempNameCreated()
   at System.CodeDom.Compiler.TempFileCollection.AddExtension(String fileExtension, Boolean keepFile)
   at System.CodeDom.Compiler.TempFileCollection.AddExtension(String fileExtension)
   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)
   at Sobey.MAM.XmlHelper.Xml2Object(String strXml, Type type)
   --- End of inner exception stack trace ---
   at Sobey.MAM.XmlHelper.Xml2Object(String strXml, Type type)
   at Sobey.MAM.AppServer.CommandTaskMonitor.CommandFlowHelper.GetAllCanSelectFlow()
   at Sobey.MAM.AppServer.CommandTaskMonitor.UCCommandTaskList.InitFlowList()
   at Sobey.MAM.AppServer.CommandTaskMonitor.UCCommandTaskList..ctor()
   at Sobey.MAM.AppServer.Console.ConsoleMainForm..ctor()
   --- End of inner exception stack trace ---
   at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)
   at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)
   at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)
   at System.Activator.CreateInstance(Type type, Boolean nonPublic)
   at System.Activator.CreateInstance(Type type)

经分析,可能是我刚删除了Temp目录的原因,于是手动创建了一个,居然不报错了。

 

总结:

1.DOTNET反序列化和序列化临时目录在C:\Documents and Settings\账户\Local Settings\Temp下

2.DOTNET不能自动创建该目录

3.如果没有该目录,序列化和反序列化将失败

posted @ 2010-03-03 11:51  遥望星空  阅读(627)  评论(0编辑  收藏  举报