【问题标题】:ASP.net: Cannot write to App_Data folder, Access is DeniedASP.net:无法写入 App_Data 文件夹,访问被拒绝
【发布时间】:2011-05-24 18:49:37
【问题描述】:

典型问题,但我已尽我所能来解决这个问题。我在我的 PC 上将 NETWORK SERVICE 和 ASPNET 帐户设置为 FULL CONTROL。我正在使用内置的 Cassini Web 服务器来测试我的应用程序,但没有运气。我什至尝试在 APP_DATA 文件夹之外创建一个文件夹,但仍然显示访问被拒绝。

有人有什么想法吗?

代码示例:

  Dim uploadedFile As HttpPostedFile = Request.Files(0)
        Dim len As Integer = uploadedFile.ContentLength
        Dim fn As String = Path.GetFileName(uploadedFile.FileName)
        Dim SaveLocation As String = Server.MapPath("~/Help")
        Dim MyStream As Stream = uploadedFile.InputStream
        Dim input(len) As Byte

        MyStream = uploadedFile.InputStream
        MyStream.Read(input, 0, len)

        Try

            Dim newFile As FileStream = New FileStream(SaveLocation, FileMode.Create)
            newFile.Write(input, 0, input.Length)
            newFile.Close()
            'Dim writer As Stream = New FileStream(SaveLocation, FileMode.Create)
            'writer.Read()
            'writer.Close()
            'uploadedFile.SaveAs(SaveLocation)
        Catch ex As Exception

        End Try

【问题讨论】:

  • 您确定 Web 服务器正在以 NETWORK SERVICE 或 ASPNET 用户身份运行您的站点吗?听起来它可能在不同的用户下运行它。
  • 我已将“安全”选项卡中的所有内容设置为完全控制。

标签: asp.net vb.net file-upload file-permissions


【解决方案1】:

好吧,我想通了。我需要在 SaveLocation 中有文件名。完全错过了。感谢您的帮助。

【讨论】:

  • 只在原始问题中发布该信息,而不是作为答案。
  • @Jack - 实际上他是在为他自己的问题提供一个答案,这对堆栈溢出平台既有效又适用于这种情况。
【解决方案2】:

如果您使用的是 IIS,请找出您遇到问题的站点的应用程序池的系统(或用户)帐户。检查以确保该用户有权访问相关文件夹。

如果您使用的是 Visual Studio 2005+,它正在构建一个新的 ASP.NET 开发服务器。这将作为您当前登录的帐户运行。您是这台机器的本地管理员吗?

【讨论】:

  • 我用的是VS 2010,不是管理员。虽然我的用户帐户拥有完全控制权。
  • 您是否尝试过对所有人启用完全控制?如果这导致错误消失,则存在帐户权限问题。如果错误仍然存​​在,那么您有不同的目录访问问题。
【解决方案3】:

您使用的是哪个版本的 IIS?

在 IIS 6 及更高版本上,它是网络服务。

在 IIS 5 及以下版本是需要访问权限的 ASPNET 用户帐户。

【讨论】:

  • 我正在使用内置的 Cassini Web 服务器。但我确实给了 NETWORK SERVICE 和 ASPNET 访问权限,完全访问权限。
猜你喜欢
  • 1970-01-01
  • 2013-08-19
  • 2014-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多