我试图保存一个图像到。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)

我完全控制了这个文件夹(savehere)到网络服务和iis_iusrs,甚至完全控制了每个人,但仍然得到这个异常。 我尝试通过浏览器和IIS管理器访问,仍然没有运气

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


当前回答

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

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

其他回答

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

下面是完整的错误信息:

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

我在IIS应用程序文件夹中添加了一个名为Templates的新文件夹。在我的案例中,一个非常重要的事情是,我需要给IUSR用户在该文件夹上的写(Gravar)权限。您可能还需要提供网络服务和ASP。净v $。#相同的写权限。

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

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

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

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

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

我花了3-4个小时才理解,我通过设置包含该文件的文件夹的安全设置解决了这个问题。 Windows 10 x64操作系统: 只需使用属性->安全->用户和组->更改..—>添加—>附加—>搜索—> <您的windows帐户名称>—> OK—> OK—>设置当前帐户的完全访问权限。还要确保该文件在属性中是“未阻塞”的。

如果您在子域上传文件时遇到此错误,并在您的本地主机中正常工作,那么请按照以下步骤执行:

解决方案:

Plesk面板

登录到Plesk面板。选择出错的子域。 点击主机设置。 选择“附加写/修改权限”和“应用”。

CPanel

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

详情请点击这里

错误原因:

假设FileUpload.SaveAs(服务器。MapPath("~/uploads/" + *YOUR_FILENAME*))将是您的代码移动您的文件上传路径。 服务器。MapPath将为您提供目录的物理路径(真实路径)。但是您的子域可能没有访问物理路径的权限。 因此,如果您赋予子域访问写/修改权限,就可以解决这个问题。

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