1

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

应用程序是用 c# .net v4 编写的,在 IIS 内运行并导出到 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”。

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

4

1 回答 1

3

这是一个问题XmlSerialization(信不信由你)。我使用自定义 ASP.NET MVC 应用程序遇到了这个问题。显然,当您调用SerializeDeserialize标记为“Serializable”的类型时,.NET 将即时生成一个程序集以支持序列化,并尝试将该程序集写入“c:\windows\temp”。

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

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

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

这是关于该工具的 MSDN 文章:sgen 参考

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

于 2011-06-29T04:18:33.207 回答