XmlSerializer无法找到文件C:\Windows\Temp\*.dll。

4
我有一个运行在知名网络托管提供商的共享服务器上的ASP.NET 2.0 Web应用程序。偶尔会出现以下错误:
无法找到文件'C:\WINDOWS\TEMP\lxnmfrsz.dll'。 描述:当前Web请求执行期间发生未处理的异常。请查看堆栈跟踪以获取有关错误的更多信息以及其在代码中的来源。
异常详细信息:System.IO.FileNotFoundException: 无法找到文件'C:\WINDOWS\TEMP\lxnmfrsz.dll'。
我已经搜索了一些资料,似乎这是一个常见问题。一个解决方案是清空临时文件夹或重新启动IIS。但由于我没有访问自己不拥有的服务器上的这些内容,这些并不是真正的选择。我尝试使用web.config中的指令将临时目录设置为不同的目录,但它似乎仍在使用默认的临时目录。是否有其他方法可以更改临时目录和/或解决此问题?

你尝试过联系你的托管提供商吗? - Daniel A. White
是的,我联系了他们。他们说我应该使用一些特殊的ASP.NET临时文件夹。那时我想我已经使用web.config指令设置了文件夹,但它仍然无法工作。 - Bob Wintemberg
3个回答

7
如果您始终序列化相同类型,可以尝试使用 sgen.exe 预生成 XmlSerializer 二进制文件。在这种情况下,XmlSerializer 将不会去搜索它们。

这可能确实是最好的选择...此外,性能将得到改善,因为不需要生成序列化程序集。 - Thomas Levesque
我已经有一段时间没有遇到这个问题了,但是这个问题总是发生在.NET框架程序集中,而不是我的程序集中。我认为这是一个托管问题。他们把Web应用程序移到另一台服务器上后,问题就停止了。我想知道是否只是共享服务器上具有许多Web应用程序的应用程序池问题。 - Bob Wintemberg

0

唯一需要注意的是,如果涉及到泛型(例如,您的类型的 List < >),似乎不可能使用 sgen 预生成序列化程序集。

解决方法是从 List < MyType > 派生出自己的类型,然后将其包含在预生成的程序集中。


-1

我无法更改我的项目(之前的解决方案),所以我必须在客户现场为我的客户找到解决方案。经过长时间尝试通过更改卡巴斯基杀毒软件来寻找解决方案,最终我找到了解决方案。 在IIS中右键单击站点,选择添加网站...并在另一个端口上启动您的站点。就这样。完成!!。 yohaaaaa。


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