消息体序列化时发生错误

3
当我在我的PC上通过VS2010 IDE或EXE运行时,它可以正常工作。但是当我通过调度程序在另一台机器上运行时,出现了错误:
There was an error in serializing body of message MyClassSoapIn: 'Unable to generate a temporary class (result=1).
error CS2001: Source file 'C:\WINDOWS\TEMP\xvjzdxjt.0.cs' could not be found
error CS2008: No inputs specified

这可能是一个权限问题吗?它正在使用临时文件夹。那会有问题吗?

1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
2

那么,你可能遇到了我曾经遇到的类似问题...

出现这个错误是因为VS在编译和/或运行过程中需要向临时文件位置写入信息,而VS没有被授予指定位置所需的权限。

临时目录由TEMP(有时还有TMP)环境变量指定。

WindowsKey + Pause > Advanced System Settings > Environment Variables
请注意,环境变量分为用户和系统两个类别。 您可能已经删除了用户变量,只剩下了系统变量。 发生的情况是VS寻找环境变量TEMP,找不到任何USER变量的值,因此使用SYSTEM变量。问题是,VS没有写入SYSTEM TEMP变量指定位置的访问权限。 因此,要修复问题,只需重新创建并定义用户TEMP、TMP环境变量,以使用正确的值'%USERPROFILE%\AppData\Local\Temp',这样VS将会找到并使用具有文件写入权限的正确位置。 或者,您可能只想将TEMP/TMP指向一个保证您不受权限影响的位置。

我的一位同事遇到了同样的问题,这个解决方案对我们有效。在他的情况下,他的临时文件夹位于 C:\Windows\Temp,很少有应用程序可以访问到。为什么你会想把临时文件夹放在Windows文件夹里呢?真恶心。 - Mike Mayer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,