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


当前回答

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

其他回答

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

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

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

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

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

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

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

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