【问题标题】:ASP.NET Session & Delete FoldersASP.NET 会话和删除文件夹
【发布时间】:2011-11-08 03:57:14
【问题描述】:

我有一个网络应用程序,管理员可以在其中在他的 cms 面板中创建新闻、pdf 文档和其他内容。

问题是当管理员删除新文件或其他内容时,应用程序会删除与该新文件相关的所有文件,我指的是图像、pdf 和其他文档。主要问题是这些文件存储在“新闻”文件夹下的文件夹中,当应用程序删除它们时,会话丢失。

如何在不丢失会话的情况下拥有文件系统? 我想要 app 文件夹中的那个文件系统...

我们不可能将这些文件夹存储在应用程序之外,并且由于性能原因我们不想使用 StateServer....

还有其他解决方案吗?

谢谢

【问题讨论】:

    标签: asp.net session directory-structure


    【解决方案1】:

    由于 IIS 重新编译,您的会话丢失。我认为最简单的解决方案是将文件存储在 wwwroot 之外。

    讨论SO:ASP.NET restarts when a folder is created, renamed or deleted

    [更新] 例子: 让我们让您的应用程序位于 c:\inetpub\wwwoot\virtualdir1

    你创建了一个工作目录: c:\inetpub\inetwork

    为您的应用程序池的 Asp.net 用户授予适当的权限(读/写/等),它应该像魅力一样工作。 更多权限设置:What are all the user accounts for IIS/ASP.NET and how do they differ?

    将工作目录的路径存储在您的 web.config 中(您不想对其进行硬编码)

    【讨论】:

    • 你能举个例子吗?另外,当失去 Session 时,你也会失去 Forms 身份验证,对吧?
    • 谢谢,但该解决方案将不起作用,因为在 Plesk 控制面板上您无法在 Plesk 之外设置任何内容,否则 Plesk 将重置您在运行维护时所做的任何权限更改...所以在域文件夹...
    【解决方案2】:

    将这些文件放在 app 文件夹中是一个糟糕的设计。由于文件系统更改导致 IIS 回收,因此会话可能会丢失。让您的 Web 应用程序无法写入自己的文件夹会更安全,这样做会带来安全风险。

    【讨论】:

    • 那么,您的意思是将每个网站的用户文件存储在“inetput”或“vhost”文件夹之外?服务器中的“C:/User_Data”之类的东西?但是,我怎样才能访问所有信息?我不能使用“~/”路由... – Mike Johnson 0 秒前编辑
    • 要通过网络访问它们,请在 iis 中创建一个指向该文件夹的虚拟目录。
    • 所以,我将这些文件放在一个文件夹中,例如“C:\Files\”。我必须创建一个指向该文件夹的虚拟目录,然后从 Web 应用程序访问该虚拟目录,对吗?你有例子吗?
    • 虚拟目录在 iis 中设置为目录,因此它在您的站点中仅显示为一个文件夹。它只是在 iis 中配置它的问题,所以我可以向您展示的内容不多。要从服务器端代码访问,您需要在配置文件中包含路径,或者您可以尝试 server.mappath(虽然我从未尝试过使用虚拟目录,所以不知道它是否会工作)
    【解决方案3】:

    将您的文档文件夹和网站文件夹分开。并为您的文件夹授予正确的权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 1970-01-01
      • 2012-08-12
      • 1970-01-01
      • 2017-08-23
      • 1970-01-01
      相关资源
      最近更新 更多