【问题标题】:Where is best to delete temporary files in an ASP.net application?哪里最好在 ASP.net 应用程序中删除临时文件?
【发布时间】:2012-11-14 12:00:21
【问题描述】:

我在我的 asp.net 应用程序中创建了几个临时文件,当用户完成使用它们时我需要删除它们。

我试过了

 void Session_End(object sender, EventArgs e) 
    {

        System.IO.File.Delete(@"C:\Temp\test.doc");        
    }

但它不起作用。

有什么想法吗?

【问题讨论】:

  • 会话永远不会结束吗?还是文件路径不正确?
  • 文件未被删除。我尝试关闭浏览器并等待超过 20 分钟
  • 请注意 Session_End 并不完全可靠 - 如果服务器崩溃,则不会调用 session_end...

标签: c# asp.net delete-file temp sessionend


【解决方案1】:

您必须在此文件夹中向 iisuser 授予权限

【讨论】:

    【解决方案2】:

    1) 在 web.config 上设置模式变量

    <sessionState 
            mode="InProc"
            stateConnectionString="tcpip=127.0.0.1:42424"
            sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
            cookieless="false" 
            timeout="20" 
    />
    

    2) 启动一个会话变量。 3)在Session_End上放一些代码,然后检查当用户在浏览器上点击[X]时该代码是否被执行。

    取自以下

    http://www.tek-tips.com/viewthread.cfm?qid=742667

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      没有可靠的(100% 有效)方法来确定用户何时离开 Web 应用程序。虽然当一切都按预期运行时,传统方法会起作用,但可能会发生会孤立数据的边缘情况,例如

      用户的计算机死机或崩溃... 服务器死机或崩溃... 用户的互联网连接失败... 服务器的互联网连接失败...

      你明白了。出于这个原因,我个人更喜欢在内存中进行所有处理,而不是将临时文件写入 Web 服务器的硬盘。这样,.Net 垃圾收集器将处理清理任何孤立数据。

      但是,如果您处理的数据量足够大,无法将其保存在内存中,请设置 Windows 服务或计划任务,以便在经过足够的时间后执行清理,以确保文件过时。继续尝试在运行时进行清理,但替代方法应该允许您处理随着时间的推移变成孤立的任何数据。

      【讨论】:

        猜你喜欢
        • 2011-08-25
        • 2013-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多