我试图保存一个图像到。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上做的,我需要给谁访问权限?


当前回答

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

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

其他回答

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

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

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

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

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

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

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

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

解决方案:

Plesk面板

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

CPanel

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

详情请点击这里

错误原因:

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

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