访问路径&c; \ inetpub \ wwwroot \ myapp \ App_Data'被拒绝

时间:2012-04-21 02:56:53

标签: asp.net iis access-denied

我刚刚在Windows XP上安装了IIS。

当我尝试执行某个应用时,出现错误:

  

拒绝访问路径'c:\ inetpub \ wwwroot \ myapp \ App_Data'。   描述:执行期间发生未处理的异常   当前的网络请求。请查看堆栈跟踪了解更多信息   有关错误的信息以及它在代码中的起源。

     

异常详细信息:System.UnauthorizedAccessException:访问   路径'c:\ inetpub \ wwwroot \ myapp \ App_Data'被拒绝。

     

ASP.NET无权访问所请求的资源。考虑   授予对ASP.NET请求的资源访问权限   身份。 ASP.NET具有基本进程标识(通常是   IIS 5上的{MACHINE} \ ASPNET或IIS 6上的网络服务)如果使用的话   该申请不是冒充。如果申请是   冒充通过,身份将是   匿名用户(通常是IUSR_MACHINENAME)或经过身份验证的用户   请求用户。

     

要授予对文件的ASP.NET访问权限,请在资源管理器中右键单击该文件,   选择“属性”,然后选择“安全”选项卡。单击“添加”进行添加   适当的用户或组。突出显示ASP.NET帐户,和   选中所需访问的框。

     

来源错误:

     

第70行:受保护的子cmbSettingFiles_SelectedIndexChanged(ByVal   sender As Object,ByVal e As System.EventArgs)Handles   cmbSettingFiles.SelectedIndexChanged
  第71行:Dim doc As XmlDocument = New XmlDocument()
  第72行:doc.Load(Path.Combine(basePath,cmbSettingFiles.SelectedValue))   第74行:Dim settingsNode As XmlNode = doc.SelectSingleNode(“/ settings”)

     

源文件:C:\ myapp \ install \ install.aspx.vb行:72

我已经尝试过光栅许可:

  

要授予对文件的ASP.NET访问权限,请在资源管理器中右键单击该文件,   选择“属性”,然后选择“安全”选项卡。单击“添加”进行添加   适当的用户或组。突出显示ASP.NET帐户,和   选中所需访问的框。

但错误仍然存​​在。

这与我的代码有关吗?

我该如何解决这个问题?

修改

我已经解决了我的开发机器上的问题,但我仍然在我的网络服务器上收到错误。

感谢。

12 个答案:

答案 0 :(得分:11)

  

尝试转到App_Data文件夹属性并添加带有read的ASPNET用户   并写入权限

价:
How to assign correct permissions to App_Data folder of WebMail Pro ASP.NET
Permissions on APP_DATA Folder
ASP/ASP.NET Best way to handle write permissions?

如果它无法解决您的问题,请检查您的XML文件是否未被另一个使用这些配置文件的线程打开..如果仍然存在则提供更多详细信息。

答案 1 :(得分:7)

对于那些在Windows Server上运行IIS的人:

默认情况下,IIS用户没有wwwroot文件夹的写入权限。这可以通过向IIS_IUSRS的{​​{1}}用户授予完全权限来解决。

  1. 打开文件资源管理器并转到wwwroot
  2. 右键单击wwwroot并单击" Properties"
  3. 转到“安全”标签,然后点击“#34;编辑..."编辑权限
  4. 查找并选择IIS用户。就我而言,它被称为C:/inetpub/
  5. 选择"允许"所有权限的复选框。

答案 2 :(得分:4)

考虑一下你的文件是否只读,那么额外的参数可能有助于FileStream

using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read))

答案 3 :(得分:1)

您确定要添加正确的用户吗?您是否检查过为应用程序应用程序池设置了哪个用户?

如果由于某种原因无法读取文件,也会发生此错误;例如文件被另一个应用程序锁定或使用。由于这是一个ASP.NET Web应用程序,因此您需要确保不执行任何需要锁定文件的操作;除非您能保证一次只能在您的页面上拥有一个用户。

您可以发布一个如何访问该文件的示例吗?它是什么类型的文件?代码片段将帮助您获得更准确的答案。

答案 4 :(得分:1)

我有类似的情况。我正在使用TFS进行源代码控制。我发现,当它被检入时,它使文件只读。这导致我的服务中的上述错误,它打开它们读/写。一旦我检查出来进行编辑。一切都很好。我正在考虑尝试在服务中只读它们。我认为一旦它们发布到生产服务器,这不是问题。仅在开发环境中。我在使用Entity Framework的服务中看到了类似的问题。如果签入.svc文件,则无法通过EF对数据库进行更新。

答案 5 :(得分:1)

我尝试使用所有权限添加ASP.net v4.0,添加NETWORK SERVICE用户但没有任何帮助。 最后,在App_Data文件夹中添加了DefaultAppPool用户的MODIFY权限,问题解决了。

答案 6 :(得分:0)

尝试向NETWORK SERVICE用户授予权限。

答案 7 :(得分:0)

请使用管理员权限运行Visual Studio ..此问题已解决..

拒绝访问路径C:\ inetpub \ wwwroot 被拒绝表示自助服务网站无法访问安装它的服务器上的特定文件夹。 这可能是因为该位置不存在,或者因为身份验证用户没有应用于写入此位置的任何权限。

答案 8 :(得分:0)

另一个原因可能是因为文件路径在您尝试写入的位置为空,这就是无法找到它的原因。这个错误发生的另一个原因。

答案 9 :(得分:0)

对我来说,我已经在wwroot中创建了一个名为excel的文件夹 D:\工作目录\ OnlineExam \ wwwroot \ excel 我正在尝试复制名称为excel的文件,该文件已经作为文件夹名称存在。所需的路径是 D:\工作目录\ OnlineExam \ wwwroot \ excel \ finance.csv 所以根据我更改代码如下

string copyPath = Path.Combine(_webHostEnvironment.WebRootPath, "excel\\finance");
                    questionExcelUpload.Upload.CopyTo(new FileStream(copyPath, FileMode.Create));

基本上检查是否存在与您的路径同名的文件夹或文件。

答案 10 :(得分:-1)

我终于找到了2019年的答案。您需要将“ IIS APPPOOL \ DefaultAppPool”添加到对要修改的目录具有安全权限的用户列表。确保他们拥有完整权限。

答案 11 :(得分:-1)

我创建了inet文件夹的副本,以复制该站点。它显示``访问被拒绝... / App_Data / viewstate / 1/6/6/0 ...''。检查时显示app_data文件夹中添加了IIS_IUSER,但未检查修改或写入访问权限。只需选中这些复选框,实例便开始运行。