今天登录到客户环境中检查日志并且通常只进行检查,只是注意到一个应用程序中的某些任务失败。
应用程序使用在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'。
这对任何人来说都很熟悉吗?
答案 0 :(得分:3)
这是XmlSerialization
的问题(相信与否)。我使用自定义ASP.NET MVC应用程序遇到了这个问题。显然,当您在标记为“Serializable”的类型上调用Serialize
或Deserialize
时,.NET将动态生成一个程序集以支持序列化,并尝试将该程序集写入'c: \ WINDOWS \ TEMP”。
即使Everyone
具有对该目录的完全控制权限,我仍然看到在IIS应用程序池中运行应用程序时会发生这种情况。特别是在具有大量序列化活动的应用程序中。
如果这听起来像你的问题,解决方案是“预编译”序列化程序集并将其包含在你的应用程序中,sgen
是Windows SDK的一部分。
这篇文章强调了类似的问题:Serialization issue on MSDN Social
以下是该工具的MSDN文章:sgen reference
最后注意:有一个单独的.NET 4.0工具版本,因此请确保在生成程序集时使用的是正确的版本。