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

时间:2011-06-29 04:04:07

标签: c# .net xml-serialization sharepoint-2007 sgen

今天登录到客户环境中检查日志并且通常只进行检查,只是注意到一个应用程序中的某些任务失败。

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

我无法100%确定.net或SharePoint是否是罪魁祸首。这些是我得到的错误:

  

任务失败:服务器无法执行   处理请求。 --->找不到   文件'C:\ Windows \ TEMP \ qbckfur1.dll'   出口26.05.2011 15:00:21失败
  任务失败:服务器无法执行   处理请求。 --->找不到   文件'C:\ Windows \ TEMP \ 2shjg2xb.dll'。
  出口26.05.2011 15:30:13失败
  任务失败:服务器无法执行   处理请求。 --->找不到   文件'C:\ Windows \ TEMP \ b7utp199.dll'。
  出口26.05.2011 16:00:15失败
  任务失败:服务器无法执行   处理请求。 --->找不到   文件'C:\ Windows \ TEMP \ ozr2umkm.dll'。

这对任何人来说都很熟悉吗?

1 个答案:

答案 0 :(得分:3)

这是XmlSerialization的问题(相信与否)。我使用自定义ASP.NET MVC应用程序遇到了这个问题。显然,当您在标记为“Serializable”的类型上调用SerializeDeserialize时,.NET将动态生成一个程序集以支持序列化,并尝试将该程序集写入'c: \ WINDOWS \ TEMP”。

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

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

这篇文章强调了类似的问题:Serialization issue on MSDN Social

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

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