拒绝访问该路径

Bur*_*jua 155 .net c# iis path denied

我知道这个问题在这里被多次询问过,但我无法找到解决问题的方法.我正在尝试将图像保存到.net c#中的文件夹但是得到此异常:

Access to the path 'C:\inetpub\wwwroot\mysite\images\savehere' is denied.The error occured at mscorlib because    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode)
Run Code Online (Sandbox Code Playgroud)

我给完全控制该文件夹(savehere)至network serviceiis_iusrs,甚至给予了充分的控制,everyone但仍然得到此异常.我尝试通过资源管理器和IIS管理器进行访问,但仍然没有运气

我在Windows Server 2008 R2和IIS 7.5上进行此操作,我需要提供哪些访问权限?

谢谢

Han*_*ant 214

访问路径'C:\ inetpub\wwwroot\mysite\images\savehere'被拒绝

仔细阅读信息.您正在尝试保存到与目录同名的文件.这不起作用,你不能用一个新文件覆盖填充文件的目录.这将导致无法识别的数据丢失,"拒绝访问路径"是文件系统反击以防止这种情况发生.

异常消息并不理想,但它直接来自操作系统,它们是一成不变的.该框架通常会添加额外的检查以生成更好的消息,但这对网络来说是一项昂贵的测试.Perf也是一个功能.

你需要使用像'C:\ inetpub\wwwroot\mysite\images\savehere\mumble.jpg'这样的名字.考虑Path.Combine()以可靠地生成路径名.

  • @Hans Passant感谢您的,有点苛刻的声明.这让我看到我的代码意识到我犯了同样的错误. (18认同)
  • 哈!我也做了同样的事情。 (2认同)

Ode*_*ded 88

您需要从应用程序池中找到该网站运行的身份(默认情况下是这样Application Pool Identity),并授予正确的权限.

  • @Burjua - 寻找`IIS APPPOOL\DefaultAppPool`用户.在官方IIS站点上查看此文章:http://learn.iis.net/page.aspx/624/application-pool-identities/ (20认同)
  • @stom - 当然这不是最佳实践.您正在打开网站以查找各种漏洞.您只需要对运行网站的用户/身份的`Images`目录具有读/写权限(您需要询问主机提供商). (3认同)
  • 我知道我来晚了。但是我面临着同样的问题。行动党明确提到,他已经赋予“所有人”完全控制权。如果我们向“所有人”授予完全控制权,那么即使如此,我们也需要授予对“ DefaultAppPool”的访问权限?令人困惑。 (2认同)

Len*_*rri 22

我在尝试在服务器上创建文件时遇到了同样的问题(实际上是一个来自模板的副本的文件).

这是完整的错误消息:

{ERROR} 08/07/2012 22:15:58 - System.UnauthorizedAccessException: Access to the path 'C:\inetpub\wwwroot\SAvE\Templates\Cover.pdf' is denied.
Run Code Online (Sandbox Code Playgroud)

Templates在IIS应用程序文件夹中添加了一个新文件夹.在我的情况下,一个非常重要的事情是我需要为该文件夹上的IUSR用户授予Write(Gravar)权限.您可能还需要给予Network ServiceASP.NET v$.#相同的写入权限.

在此输入图像描述

完成后,一切都按预期工作.

  • 哈布拉用英格尔斯? (3认同)

Rus*_*kin 12

我有完全相同的问题.

解决方案是我试图访问的文件是readonly,因为它是从readonly的模板文件中复制的.

<facepalm />


Mar*_*osa 7

当我尝试保存文件而不设置文件名时,我遇到了这个问题.

旧代码

File.WriteAllBytes(@"E:\Folder", Convert.FromBase64String(Base64String));
Run Code Online (Sandbox Code Playgroud)

工作守则

File.WriteAllBytes(@"E:\Folder\"+ fileName, Convert.FromBase64String(Base64String));
Run Code Online (Sandbox Code Playgroud)


小智 6

我用这个设置解决了:

IIS > 应用程序池 > [您的站点] > 高级设置... > 身份 > 内置帐户 > LocalSystem

  • @MohammadHosseinGanjyar LocalSystem 拥有系统的管理员权限。通过在该帐户下运行网站,您基本上可以向其提供整个系统以及服务器所在的整个本地网络的密钥。这意味着,如果攻击者找到了利用您网站的方法,则该网站和整个系统都会被搞砸。这就是特权/权利和帐户存在的首要原因。根据经验,请记住这一点 - 任何软件都不应该以比完成其工作所需的更大的权限运行。例如博客网站不需要格式化D:盘的权限 (3认同)
  • 这是授予您的网站本地管理员权限。这是一个安全问题。 (2认同)
  • 切勿在本地系统帐户下运行您的网站。曾经。时期。 (2认同)

小智 6

就我而言,我正在尝试访问设置为只读的文件

在此输入图像描述

我通过禁用只读解决了这个问题,并且修复了它!

在此输入图像描述

希望它对遇到像我这样的情况的人有所帮助。


jes*_*sal 5

我的问题是我不得不要求只读读取权限:

FileStream fs = new FileStream(name, FileMode.Open, FileAccess.Read);
Run Code Online (Sandbox Code Playgroud)


Ali*_*uli 5

请将IIS_IUSERS完全控制权限添加到您的文件夹中.您可以从文件夹属性的安全选项卡中找到此选项. 在此图像中找到此选项和用户