none
System.XML.dll的问题 RRS feed

  • 问题

  • 我们的系统在访问WebService时偶尔会报以下错误信息:

    Exception:   System.Runtime.InteropServices.ExternalException: 无法执行程序。所执行的命令为 "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe" /noconfig /fullpaths @"C:\WINDOWS\TEMP\dlqibe-k.cmdline"。
       在 System.CodeDom.Compiler.Executor.ExecWaitWithCaptureUnimpersonated(SafeUserTokenHandle userToken, String cmd, String currentDir, TempFileCollection tempFiles, String& outputName, String& errorName, String trueCmdLine)
       在 System.CodeDom.Compiler.Executor.ExecWaitWithCapture(SafeUserTokenHandle userToken, String cmd, String currentDir, TempFileCollection tempFiles, String& outputName, String& errorName, String trueCmdLine)
       在 Microsoft.CSharp.CSharpCodeGenerator.Compile(CompilerParameters options, String compilerDirectory, String compilerExe, String arguments, String& outputFile, Int32& nativeReturnValue, String trueArgs)
       在 Microsoft.CSharp.CSharpCodeGenerator.FromFileBatch(CompilerParameters options, String[] fileNames)
       在 Microsoft.CSharp.CSharpCodeGenerator.FromDomBatch(CompilerParameters options, CodeCompileUnit[] ea)
       在 Microsoft.CSharp.CSharpCodeGenerator.FromDom(CompilerParameters options, CodeCompileUnit e)
       在 Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromDom(CompilerParameters options, CodeCompileUnit e)


    C:\WINDOWS\TEMP\dlqibe-k.cmdline中代码为:
    /t:library /utf8output /R:"System.dll" /R:"System.XML.dll" /R:"System.Web.Services.dll" /R:"System.Data.dll" /R:"System.Xml.dll" /R:"System.EnterpriseServices.dll" /out:"C:\WINDOWS\TEMP\4tecbabf.dll" /debug- /optimize+  "C:\WINDOWS\TEMP\4tecbabf.0.cs"

    在网上查了一下,有的网站上说是xml序列化的问题。

    目前解决办法:我将应用程序池重新启动一下,此现象会消失。但是在过了一段时间后又会重现,望微软相关人士给予答复,谢谢。
    • 已编辑 zhche 2010年2月22日 1:52 描述的更清楚
    2010年2月22日 1:34

答案

  • /t:library /utf8output /R:"System.dll" /R:"System.XML.dll" /R:"System.Web.Services.dll" /R:"System.Data.dll" /R:"System.Xml.dll" /R:"System.EnterpriseServices.dll" /out:"C:\WINDOWS\TEMP\4tecbabf.dll" /debug- /optimize+  "C:\WINDOWS\TEMP\4tecbabf.0.cs"

    修改为 /t:library /utf8output /R:"System.dll" /R:"System.XML.dll" /R:"System.Web.Services.dll" /R:"System.Data.dll" /R:"System.EnterpriseServices.dll" /out:"C:\WINDOWS\TEMP\4tecbabf.dll" /debug- /optimize+  "C:\WINDOWS\TEMP\4tecbabf.0.cs"

    试试呢

    再通过WebService创建对象亦即Xml反序列化的时候 会调用csc.exe,如果频繁多次调用则可能出现内存泄漏的情况 导致最终程序崩溃,如果你是进行XML序列化建立对XmlSerializer对象实例进行缓存
    Memory all alone in the moonlight~My Blog in .NET~~~
    2010年2月22日 6:11
    版主