服务器上动态生成的文件不会在Windows Server 2003上发布进程句柄.NET

时间:2009-04-24 09:47:39

标签: .net windows file iis-6

我构建了一个Web应用程序,用户可以请求在服务器上生成并发送回客户端的报告。该过程正常工作并将文件发送回客户端,但我们无法打开该文件。进一步调查显示,服务器上的进程仍然可以通过IIS应用程序池处理该文件。

这是一个奇怪的部分:

  1. .NET代码调用Close()来关闭文件和底层流。
  2. 此问题仅发生在我们的生产服务器中。在开发和测试中它运行良好。
  3. 我们尝试更改服务器和IIS中的许多不同设置
  4. 到目前为止,我们尝试了许多不同的想法,让它在生产服务器上运行,但没有运气。
  5. 这可能是什么原因?我们正在运行Windows Server 2003,IIS 6.请帮助!!

3 个答案:

答案 0 :(得分:1)

您是否在服务器上运行防病毒软件?它可能是扫描文件,因为它是一个新文件。

我回应上面关于Dispose的PITADeveloper的评论。我要进一步说,你应该确保你创建的每个实现IDisposable的对象都有Dispose调用它。如果您创建它,则必须处理它:

using (var resource = ResourceType.Create())
{
    // Use the resource
}   // resource.Dispose called here even if your code throws an exception

答案 1 :(得分:0)

你说“.NET代码在文件上调用Close()”。它是否也在用于创建文件的任何资源上调用Dispose()?

答案 2 :(得分:0)

如果您通过HTTP发送文件,服务器的锁定不会对能够在客户端上打开文件产生任何影响。您确定服务器关闭了生产服务器上的文件吗?也许生产服务器上的某些东西阻止了Web应用程序完全生成文件。