访问path被拒绝
我知道这个问题在这里被问了很多次,但我找不到解决我的问题。 我试图将图像保存到.net c#文件夹,但得到这个exception:
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 service
和iis_iusrs
,甚至完全控制everyone
但仍然得到这个exception。 我试图通过资源pipe理器访问,并通过IISpipe理器,仍然没有运气
我正在Windows Server 2008 R2和IIS 7.5上执行此操作,我需要授予哪些访问权限?
谢谢
您需要从网站的应用程序池中find它正在运行的标识(默认情况下,这是“ Application Pool Identity
)并授予正确的权限。
访问path“C:\ inetpub \ wwwroot \ mysite \ images \ savehere”被拒绝
仔细阅读信息。 您正试图保存到与目录具有相同名称的文件。 这是行不通的,你不能用一个新文件覆盖一个文件夹。 这将导致不可知的数据丢失,“访问path被拒绝”是文件系统反击,以防止发生。
您需要使用“C:\ inetpub \ wwwroot \ mysite \ images \ savehere \ mumble.jpg”这样的名称。 考虑Path.Combine()来可靠地生成path名。
我在尝试在服务器上创build文件(实际上是从模板复制的文件)时遇到了同样的问题。
这是完整的错误信息:
{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)权限。 您可能还需要赋予Network Service
和ASP.NET v$.#
相同的写入权限。
做完这一切后,一切按预期工作。
我有完全一样的问题。
解决方法是我试图访问的文件是只读的 ,因为它是从只读模板文件复制的。
<facepalm />
什么身份是您的应用程序池运行的Web应用程序,以排除故障,尝试创build一个新的应用程序池,说networking服务作为其身份,并使您的Web应用程序使用您创build的新的应用程序池,看看是否仍然存在错误。
当我尝试保存文件而没有设置文件名时遇到了这个问题。
老代码
File.WriteAllBytes(@"E:\Folder", Convert.FromBase64String(Base64String));
工作代码
File.WriteAllBytes(@"E:\Folder\"+ fileName, Convert.FromBase64String(Base64String));
下面的提示不是对这个线程原来的问题的答案,但可能会帮助一些其他的用户,最终在这个网页上,做了同样的愚蠢的错误后,我只是做…
我试图得到一个ASP.Net FileUpload控制上传它的文件到一个networking地址,其中包含一个“ 隐藏共享 ”,即:
\ MyNetworkServer \ C $ \ SomeDirectoryOrOther
我不明白这一点。 如果我在Visual Studio中以debugging模式运行网页,它会正常工作。 但是,当项目部署,并通过应用程序池用户运行,它拒绝find这个networking目录。
我已经检查了我的IIS站点正在运行的用户,给这个用户对“ MyNetworkServer ”服务器等这个目录的完全权限,但没有任何工作。
原因(当然!)是只有pipe理员能够“看到”这些隐藏的驱动器共享。
我的解决scheme只是创build一个“正常”的份额
\ MyNetworkServer \ SomeDirectoryOrOther
这摆脱了“访问path…被拒绝”的错误。 FileUpload能够成功运行该命令
fileUpload.SaveAs(networkFilename);
希望这有助于一些其他用户谁犯了同样的错误!
还要注意,如果你正在上传大文件(超过4Mb),那么IIS7需要你在两个地方修改web.config文件。 点击此链接阅读你需要做的事情: 在ASP.Net上传大文件
我的问题是,我不得不要求读访问权限:
FileStream fs = new FileStream(name, FileMode.Open, FileAccess.Read);
我的问题是这样的:
FileStream ms = new FileStream(path, FileMode.Open, FileAccess.ReadWrite);
但不使用path我应该使用File.FullName …我不知道是否会帮助其他人,只是通过我给自己的经验给这个错误!
-
将设置从内置帐户更改为自定义帐户,并input其他服务器的用户名和密码。
-
保持设置为集成(而不是经典模式)。
请将IIS_IUSERS完全控制权限添加到您的文件夹。 您从文件夹属性中的安全选项卡中find此选项。
使目录保存为虚拟目录,并给予控制面板的读写权限
有一个与我正在写的文件同名的目录,所以人们也可以注意到这一点。
我在本地工作站上开发时遇到此问题。
经过几次iisreset
调用失败后,我通过重新启动机器来弥补了这种情况。
回想起来,一个打开的文件句柄可能会引起问题。
我创build了一个具有完全权限的虚拟目录,并在那里添加了ffmpeg源文件和video文件,所以最后它是有道理的,因为任何人都可以访问它。
在我的情况下,我不得不在IIS中为网站添加一个.NET授权规则。
我添加了一个允许匿名用户的规则。