从Winform App消耗Web服务时出错-"无法执行程序..."

时间:2020-03-05 18:53:17  来源:igfitidea点击:

我有一个winform应用程序,该应用程序调用网络服务以检查更新。这可以在dev中工作,并且在我尝试过的其他地方也可以工作,只是不在机器上已安装的副本上工作(在dev中碰巧是一样的)。

错误是:

无法执行程序。正在执行的命令是" C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ csc.exe" / noconfig / fullpaths @" C:\ Documents and Settings \ Giovanni.DOUBLE-AFSSZ043 \ Local Settings \ Temp \ squ8oock .cmdline"。

防火墙已禁用,我一直在寻找" C:\ Documents and Settings \ Giovanni.DOUBLE-AFSSZ043 \ Local Settings \ Temp \ squ8oock.cmdline",但它不存在。请注意,每次尝试使用Web服务时,"。cmdline"文件都是不同的,例如,我第二次运行该文件时,文件是" dae8rgen.cmdline"。无论它叫什么名字,我都找不到文件。

有什么建议?

解决方案

回答

" .cmdline"文件是由.NET框架自动生成的文件。该应用程序正在尝试实时编译XML序列化器,该XML序列化器用于解析来自Web服务的数据。

我们是否已验证可以从命令行窗口执行" csc.exe"?即使只是键入" C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ csc.exe /?"应该会为我们提供编译器选项的列表(或者,如果我们没有执行权限,则应该给我们一个错误)。

我们在哪个用户帐户下运行此帐户,它是否有权执行Windows目录中的.exe文件?同样,我知道我们说过这种情况会在计算机上安装的副本上发生,但是是否有可能在网络共享上执行并收到有限的代码访问安全权限,这将阻止它运行本地可执行文件?

作为参考,这是一个知识库文章,显示了当用户帐户没有足够的权限时在ASP.NET中可能发生的类似错误。
http://support.microsoft.com/kb/315904

回答

我遇到了同样的问题,并发现我的内存不足。

在检查了Redhats" ANTS Memory Profiler"之后,我发现我在GC根目录的COM +中有大量内存。一个快速的谷歌,我发现自己在这里:msdn XmlSerializers

然后,我阅读以下内容:

If you use any of the other
  constructors, multiple versions of the
  same assembly are generated and never
  unloaded, which results in a memory
  leak and poor performance. The easiest
  solution is to use one of the
  previously mentioned two constructors.
  Otherwise, you must cache the
  assemblies in a  Hashtable...

在为序列化程序创建哈希表之后,我的内存泄漏(和较差的性能)问题以及由此产生的错误消息(如我们​​的错误消息)消失了。