找不到涉及随机临时文件的疯狂.net/Sharepoint错误

本文关键字:net Sharepoint 错误 疯狂 随机 临时文件 找不到 | 更新日期: 2023-09-27 18:00:42

今天登录到客户环境检查日志,通常只是进行检查,结果发现一个应用程序中的一些任务失败了。

应用程序是在IIS内部运行的c#.net v4中编写的,并导出到Sharepoint 2007。

我不能百分之百确定是.net还是SharePoint是罪魁祸首。这些是我得到的错误:

任务失败:服务器无法处理请求。--->找不到文件"C:''Windows''TEMP''qbckfur1.dll"。
导出2011年5月26日15:00:21失败
任务失败:服务器无法处理请求。--->找不到文件"C:''Windows''TEMP''2shjg2xb.dll"。
出口2011年5月26日15:30:13故障
任务失败:服务器无法处理请求。--->找不到文件"C:''Windows''TEMP''b7utp199.dll"。
导出2011年5月26日16:00:15失败
任务失败:服务器无法处理请求。--->找不到文件"C:''Windows''TEMP''ozr2umkm.dll".

这看起来熟悉吗?

找不到涉及随机临时文件的疯狂.net/Sharepoint错误

这是XmlSerialization的一个问题(不管是否存在)。我在一个自定义的ASP.NET MVC应用程序中遇到了这个问题。显然,当您对标记为"Serializable"的类型调用SerializeDeserialize时,.NET将动态生成一个程序集来支持序列化,并尝试将该程序集写入"c:''windows''temp"。

即使Everyone对该目录具有完全控制访问权限,我仍然看到在IIS应用程序池中运行应用程序时会出现这种情况。尤其是在具有大量序列化活动的应用程序中。

如果这听起来像是您的问题,那么解决方案是"预编译"序列化程序集,并使用sgen(Windows SDK的一部分)将其包含在您的应用程序中。

这篇文章强调了一个类似的问题:MSDN Social 上的序列化问题

以下是MSDN上关于该工具的文章:sgen reference

最后注意:.NET 4.0工具有一个单独的版本,所以在生成程序集时请确保使用正确的版本。