【问题标题】:ASP.NET Website where to save generated filesASP.NET 网站保存生成文件的位置
【发布时间】:2012-09-21 15:54:24
【问题描述】:

我有一个 ASP.Net 网站,在某些情况下,它会生成 .pdf 文件和 .csv 文件供用户下载。

现在我的问题是:在网络服务器上保存文件的默认目录是什么?有没有像 App_... 之类的 ASP.NET 文件夹?

你有什么推荐的?

【问题讨论】:

    标签: c# asp.net file-location


    【解决方案1】:

    如果您不想重复使用文件,请直接流式传输文件而不将其保存到磁盘。

    如果您将其保存到磁盘,您必须自问该文件的内容是否可供所有用户使用,或者其他用户可以访问这些文件是否是个坏主意。如果这是一个坏主意,则应通过相应地设置访问权限,使用户无法使用您放置文件的文件夹。您可以通过将文件夹放在网站目录之外或通过在文件系统或网络服务器上设置安全设置来做到这一点。

    基本上,您可以将文件放在任何对编写文件的用户(通常是 ASP.NET 应用程序池用户)可写的文件夹中。 IIRC App_data 文件夹对于 ASP.NET 用户默认是可写的,因此它可能是一个候选者。

    【讨论】:

    • 感谢您的回答!流文件而不保存到光盘的东西听起来对我来说真的很有趣!我该怎么做?
    • @Nagelfar - 如果你使用 MVC,你可以看到 this question。如果您使用网络表单,请参阅here。基本上,您可以按照链接示例说明的方式流式传输任何类型的流(如果您没有物理文件,则为 MemoryStream)。
    • @Nagelfar - 如果您使用组件在内存中生成 PDF 文件,通常可以选择将文件写入流。 CSV 文件库也是如此。如果您自己生成 CSV 文件,则有一个 question here 关于流式传输 CSV。
    【解决方案2】:

    您可以根据需要创建适当的文件夹

    此处列出特定文件夹(但您不需要):

    App_GlobalResources, 
    App_LocalResources, 
    App_Resources
    App_Themes
    App_WebReferences)
    App_Code
    App_Data
    App_Browsers
    

    这里是关于项目结构的 MSDN 链接

    链接:http://msdn.microsoft.com/en-us/library/ex526337%28v=vs.100%29.aspx

    【讨论】:

      【解决方案3】:

      这真的取决于你!我建议您将它们放在解决方案的子文件夹中,以便它们是独立的,您可以轻松控制安全性,而不必担心树下的文件夹。

      【讨论】:

        【解决方案4】:

        文件夹是你告诉它的任何东西。如果您的音量较低,您可以只从内存中流式传输文件,这样它们就不会存储在服务器上。

        【讨论】:

          【解决方案5】:

          考虑是否要拥有多个 Web 服务器以及在集群中拥有服务器也很重要。要为这种情况做好准备,最好不要将文件保存在 Web 应用程序文件夹下,也不要相对于应用程序路径访问它们,而是将文件保存在您可以轻松暴露的单独文件夹中(仍然会有是安全问题)作为网络路径。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-05-29
            • 2013-01-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-12-01
            • 2013-06-11
            • 1970-01-01
            相关资源
            最近更新 更多