拒绝访问该路径

我试图保存一个图像到。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)
我把这个文件夹(保存在这里)的完全控制权交给了network serviceiis_iusrs,甚至把完全控制权交给了everyone,但仍然得到这个异常。 我试图通过浏览器和IIS管理器访问,仍然没有运气

我是在Windows server 2008 R2和IIS 7.5上做的,我需要给谁访问权限?

639426 次浏览

你需要从网站的应用程序池中找出它在什么身份下运行(默认情况下是Application Pool Identity),并授予正确的权限。

您的Web应用程序运行的应用程序池的身份是什么,为了排除故障,尝试创建一个新的应用程序池,例如网络服务作为其身份,并让您的Web应用程序使用您创建的新应用程序池,看看错误是否仍然存在。

使目录savehere为虚拟目录,并从控制面板给予读/写权限

拒绝访问路径“C:\inetpub\wwwroot\mysite\images\savehere”

仔细阅读这条信息。您正在尝试保存到与该目录同名的文件。这是行不通的,您不能用一个新文件覆盖一个充满文件的目录。这将导致无法诊断的数据丢失,“对路径的访问被拒绝”是文件系统的反击,以防止这种情况发生。

异常消息并不理想,但它直接来自操作系统,而且它们是固定不变的。该框架通常会添加额外的检查以生成更好的消息,但这在网络上是一项昂贵的测试。性能也是一个特性。

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

下面的提示不是是这个线程的原始问题的答案,但可能会帮助一些其他用户在这个网页上结束,在犯了同样愚蠢的错误之后,我刚刚做了…

我是想搞个ASP。Net FileUpload控件将文件上传到包含“隐藏的分享”的网络地址,即:

\ MyNetworkServer \ \ SomeDirectoryOrOther加元

我不明白。如果我在Visual Studio的调试模式下运行网页,它会工作得很好。但是当项目被部署并通过应用程序池用户运行时,它拒绝找到这个网络目录。

我已经检查了我的IIS站点在哪个用户下运行,给了这个用户对“MyNetworkServer”服务器上的这个目录的完全权限,等等,但什么都不起作用。

原因(当然!)是只有管理员能够“看到”这些隐藏的驱动器共享。

我的解决方案是简单地创建一个“正常的”共享

\ MyNetworkServer \ SomeDirectoryOrOther

这样就摆脱了“访问路径…”被拒绝”的错误。日志含义FileUpload能够成功运行该命令

fileUpload.SaveAs(networkFilename);

希望这能帮助到其他和我犯同样错误的用户!

还需要注意的是,如果你上传的是大文件(超过4Mb),那么IIS7要求你修改网页。config文件在两个的位置。点击此链接,阅读你需要做的事情: 在ASP中上传大文件。网 < / p >

我也有同样的问题。

解决方案是,我试图访问的文件是只读的,因为它是从一个只读模板文件复制的。

& lt; facepalm指/比;

我的问题大概是这样的:

FileStream ms = new FileStream(path, FileMode.Open, FileAccess.ReadWrite);

但是我应该使用File.FullName… 我不知道它是否会帮助其他人,只是传递我自己的经验与这个错误!< / p >

当我试图在服务器上创建一个文件(实际上是从模板复制的文件)时,也遇到了同样的问题。

下面是完整的错误信息:

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

我在IIS app文件夹中添加了一个名为Templates的新文件夹。在我的案例中,一个非常重要的事情是,我需要给IUSR用户在该文件夹上的写(Gravar)权限。你可能还需要给Network ServiceASP.NET v$.#相同的写权限。

enter image description here

完成此操作后,一切正常工作。

我的问题是,我必须要求只读访问:

FileStream fs = new FileStream(name, FileMode.Open, FileAccess.Read);

有一个与我试图写的文件同名的目录,所以人们也可以找到它。

我在本地工作站上开发时遇到了这个问题。

在几次不成功的iisreset调用之后,我通过重新启动我的机器来纠正这种情况。

回顾一下,打开的文件句柄可能会导致问题。

我创建了一个具有完全权限的虚拟目录,并在那里添加了ffmpeg源文件和视频文件,所以最终它是有意义的,因为它可以被任何人访问。

  1. 将“内置帐户”修改为“自定义帐户”,并输入另一台服务器的用户名和密码。

  2. 保持设置为集成模式(而不是经典模式)。

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

旧的代码

File.WriteAllBytes(@"E:\Folder", Convert.FromBase64String(Base64String));

工作代码

File.WriteAllBytes(@"E:\Folder\"+ fileName, Convert.FromBase64String(Base64String));

在我的情况下,我必须在IIS中为网站添加一个. net授权规则。

我添加了一条允许匿名用户的规则。

。 . NET授权规则

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

我解决了这个设置:

IIS >应用程序池>[您的站点]>高级设置…> 标识>内置帐户> LocalSystem

. properties

我也有同样的问题,但我通过将文件保存在不同的位置,然后复制文件并粘贴到我想要的位置来解决它。我使用这个选项来替换现有的文件,这对我来说很有用。我知道这不是最有效的方法,但它确实有效,而且用时不到15秒。

也许对你有帮助。

string tempDirectoryPath = @"C:\Users\HOPE\Desktop\Test Folder";
string zipFilePath = @"C:\Users\HOPE\Desktop\7za920.zip";
Directory.CreateDirectory(tempDirectoryPath);
ZipFile.ExtractToDirectory(zipFilePath, tempDirectoryPath);

我遇到了很多麻烦,特别是与我的代码在本地运行有关,但当我需要在IIS上运行它时,它抛出了这个错误。我发现,在我的代码中添加一个检查,并让应用程序在第一次运行时创建文件夹,就可以解决这个问题,而不必打乱文件夹的授权。

在调用使用文件夹的方法之前

bool exists = System.IO.Directory.Exists("mypath");


if (!exists)
System.IO.Directory.CreateDirectory("mypath");

如果你在子域中上传文件时得到这个错误,并且在你的localhost中工作正确,那么按照以下步骤进行:

解决方案:

Plesk面板

  • 登录到Plesk面板。选择出错的子域。
  • 单击< / em > < em >主机设置
  • 选择额外的写/修改权限并应用。

CPanel

  • 我不确定CPanel中可用的选项。但如果你给目录权限(在CPanel中,它必须是十进制数字,如777,755)将解决这个错误。

详情请点击这里

错误原因:

  • 让我们假设FileUpload.SaveAs(Server.MapPath("~/uploads/" + *YOUR_FILENAME*))将是你的代码移动你的文件上传路径。
  • Server.MapPath将为您提供目录的物理路径(真实路径)。但是您的子域可能没有访问物理路径的权限。

  • 因此,如果您赋予子域访问写/修改权限,就可以解决这个问题。

您可以尝试检查项目的web属性是否没有切换到IIS Express,并将其更改回IIS Local

确保你在System.IO.Delete(string file)中的目标是一个存在的文件。 也许你的代码中有错误,比如你没有将正确的文件名传递给方法,或者你的目标是一个文件夹。在这些情况下,你会看到:"access to the path is denied error".

在我的例子中,我试图访问一个设置为只读的文件

enter image description here

我通过禁用只读来解决它,我得到了它的修复!

enter image description here

希望它能对像我一样经历这种情况的人有所帮助。

你需要添加访问参数读写值,如下所示

using (var stream = new FileStream(localPath, FileMode.Create, access : FileAccess.ReadWrite))
{
file.CopyTo(stream);
}

我最近在试图访问一个通过命令行参数传递到我的.Net Core应用程序的文件时遇到了这个问题,这是因为当应用程序在 a “开放with"(文件下的系统资源管理器上下文菜单)系统菜单当前活动的用户可能不同,用户没有访问我的外部驱动器的权利,我试图打开一个文件。

我花了3-4个小时才理解,我通过设置包含该文件的文件夹的安全设置解决了这个问题。 Windows 10 x64操作系统: 使用Properties -> Security -> Users and Groups -> Change.. -> Add -> Additional -> Search -> <your windows account name> -> OK -> OK -> Set full access for your current account.也要确保文件是“未阻塞”的。在属性。< / p >