为什么访问路径被拒绝?
我有一个问题,我试图删除我的文件,但我得到一个异常。为什么访问路径被拒绝?
if (result == "Success")
{
if (FileUpload.HasFile)
{
try
{
File.Delete(Request.PhysicalApplicationPath + app_settings.login_images + txtUploadStatus.Text);
string filename = Path.GetFileName(btnFileUpload.FileName);
btnFileUpload.SaveAs(Request.PhysicalApplicationPath + app_settings.login_images + filename);
}
catch (Exception ex)
{
Message(ex.ToString());
}
}
}
另外我应该注意,我试图删除的文件夹已完全控制网络服务。
完整异常消息为:
System.UnauthorizedAccessException:对路径 'C:\用户\ gowdyn \文件\的Visual Studio 2008 \项目\混合\混合\ temp_loginimages \ enviromental.jpg'被拒绝。 System.IO .__中的System.IO.__错误.WinIOError(Int32错误代码,字符串maybeFullPath)在System.IO.File.Delete(字符串路径)在hybrid.User_Controls.Imgloader_Add_Edit_Tbl.btnUpdate_Click(对象发件人,EventArgs e)在C:\ Users \ gowdyn \ Documents \ Visual Studio 2008 \ Projects \ hybrid \ hybrid \ User_Controls \ Imgloader_Add_Edit_Tbl.ascx.cs:line 242
任何想法?
您需要修改您尝试从/保存到的文件夹的权限。右键单击包含的文件夹并使用“安全”选项卡为您的应用程序运行所在的用户授予修改权限。
你假设他是他的机器的管理员..如果这是一台工作机器,他只是一个用户..他们可能会设置权限的方式有原因..因为我们只是假设 – MethodMan 2012-01-11 15:06:52
这是一个工作机器和我是一个权力用户。我不以管理员身份登录。图像文件夹的属性已被修改,因此网络服务具有完全访问权限。但是这没有什么区别。 – 2012-01-11 15:24:18
我刚刚添加了“所有人”,完全访问该文件夹,“voilá” – MarceloBarbosa 2017-01-17 13:45:06
我也面临着试图在服务器部署后,要做到这一点,当同样的问题:
dirPath = Server.MapPath(".") + "\\website\\" + strUserName;
if (!Directory.Exists(dirPath))
{
DirectoryInfo DI = Directory.CreateDirectory(dirPath);
}
string filePath = Server.MapPath(".") + "\\Website\\default.aspx";
File.Copy(filePath, dirPath + "\\default.aspx", true);
File.SetAttributes(dirPath + "\\default.aspx", FileAttributes.Normal);
我将IIS的权限授予其他组,包括管理员和我的问题得到解决。
由于I/O错误或特定类型的安全错误,操作系统拒绝访问 时引发的异常。
我碰到同样的事情。检查以确保该文件不被隐藏。
我也有这个问题,所以我在这篇文章中磕磕绊绊。我在复制/删除之前和之后添加了以下代码行。
删除
File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);
复制
File.Copy(file, dest, true);
File.SetAttributes(dest, FileAttributes.Normal);
我给了'每个人'的文件夹没有成功的完全权限。不知何故,这些文件属性虽然工作。谢谢。我希望MS最终能够建立一个适当的安全模式。试图找出为什么复制/删除每隔几年爆炸至少令人沮丧。 – Steve 2013-01-07 21:43:15
SetAttributes正常是我的诡计 - 我试图File.Copy并覆盖只读文件。 – 2013-02-28 16:51:34
+1!我用'临时',这似乎也适用于我。 – christiandev 2013-10-10 11:44:57
我有同样的问题在共享服务器上的新移动网站上。通过Web主机面板(DotNetPanel)解决设置为“允许写入权限”。因此,如果您在查看所有代码后查看服务器配置,并且可以为您节省大量时间,那么如果您在共享服务器中。
请注意,如果您尝试从代码中访问共享文件夹路径,则不需要通过安全选项卡授予物理文件夹的适当权限。您还需要通过Share选项卡与相应的应用程序池用户“共享”文件夹
这是一个老问题,但我在搜索时遇到了这个问题。原来,我错过了在另存为保存路径的实际文件名部分...
string uploadPath = Server.MapPath("~/uploads");
file.SaveAs(uploadPath); // BAD
file.SaveAs(Path.Combine(uploadPath, file.FileName)); // GOOD
与我的这个答案,我也得到访问被拒绝的错误,你可以帮助https://*.com/questions/49187909/storing-file-by-creating-datefolders-and-saving-inside-it – BNN 2018-03-09 09:26:59
我发现可以,而不是在设计模式下会出现这个错误?执行模式... 如果您正在做某些事情,例如创建需要访问.INI或.HTM文件(配置文件,帮助文件)的类成员,则可能不希望在声明中初始化该项目,而是初始化它后来的Form_Load()等等...... 当你做初始化...使用保护IF语句:
/// <summary>FORM: BasicApp - Load</summary>
private void BasicApp_Load(object sender, EventArgs e)
{
// Setup Main Form Caption with App Name and Config Control Info
if (!DesignMode)
{
m_Globals = new Globals();
Text = TGG.GetApplicationConfigInfo();
}
}
这将保持MSVS设计师从尝试,当你在设计,创造一个INI或HTM文件模式。
检查您的文件属性。如果只读被选中,取消选中它。这是我的UnauthorizedAccessException个人问题。
根据File.Delete Method ...
的UnauthorizedAccessException
意味着4两件事:
- 调用方没有所要求的权限。
- 该文件是一个正在使用的可执行文件。
- Path是一个目录。
- 路径指定一个只读文件。
路径是一个目录。尴尬的我:/ – 2017-03-08 09:10:23
昨天发生在我身上* facepalm *。我讨厌这个ambigous例外消息:( – 2017-03-24 15:18:18
我一直在努力超过6小时,并在看到你的回应后,看到该路径是目录...感谢吨@CrazyTim .. – 2017-11-29 00:59:50
如果这是一个有问题的IIS网站,请检查网站或应用程序使用的应用程序池的高级设置的Identity属性。您可能会发现它已设置为ApplicationPoolIdentity,在这种情况下,这是必须有权访问该路径的用户。
或者你也可以过时并简单地将身份设置为网络服务,并让网络服务用户访问路径。
当我尝试在移动或创建后非常快速地重命名文件夹时,出现此错误。
一个简单的System.Threading.Thread.Sleep(500);
解决它:
void RenameFile(string from, string to)
{
try
{
System.IO.File.Move(from, to)
}
catch
{
System.Threading.Thread.Sleep(500);
RenameFile(from, to);
}
}
认为如果您在移动文件夹之前检查文件夹是否存在,而不是睡眠半秒钟会更好......如果操作系统繁忙,则先前的移动可能需要半秒多的时间,而您回到相同的问题。 – 2016-06-10 13:28:46
这段代码非常危险。无论抛出什么异常,它都会重复RenameFile方法!如果异常的原因是一个实际的许可问题,它可能会导致应用程序崩溃 – 2016-06-19 05:42:50
右键单击Visual Studio和点击以管理员身份运行
这是我在本地管理员的Windows 8.1企业计算机上针对我的File.Move问题的解决方案,并且没有其他任何文件处理该文件。 – 2016-05-16 21:25:04
我得到的错误,因为我不知道,DEST应该是一个文件。我有一个文件夹作为第二个参数(它在cmd中工作)。我得到了Unhandled Exception: System.UnauthorizedAccessException: Access to the path is denied.
因为c#文件。Move需要一个文件,不仅仅是第一个参数,而是第二个参数,所以如果你把一个目录作为第二个参数,当你有一个名为c:\crp
的目录时,它试图写一个像c:\crp
这样的文件。
这将是不正确File.Move(args[0],"c:\\crp");
所以,这将是正确File.Move(args[0],"c:\\crp\\a.a");
这同样适用于File.Copy
谢谢!这间接地解决了一个问题,即一个API期望我提供的目录作为目录,而不是意识到它必须包含文件名(因为对象本身有一个关联的文件名)。 – Salgat 2017-10-05 18:29:35
我得到这个错误并解决它在短短的时刻。不知道为什么我的所有文件夹都是只读的,我取消了只读并应用它。但是,它仍然是只读的。所以我将文件移动到根文件夹中,它工作 - 很奇怪。
我面临这个错误,因为
有时,当我Combine
的路径与文件名和FileName = ""
它成为Path Directory
不是file
这是一个问题,因为mentioned above
所以您必须检查FileName
这样的
if(itemUri!="")
File.Delete(Path.Combine(RemoteDirectoryPath, itemUri));
什么是不明确的例外?应用程序正在运行的帐户对该文件/文件夹没有访问权限。 – Oded 2012-01-11 15:01:12
我了解异常情况。问题是这个功能被一些需要使用系统修改图像的用户使用。部分原因是通过删除旧图像并保存新图像来替换图像。 – 2012-01-11 15:25:55
检查您对该文件夹的访问权限。 使用属性窗口中的安全选项卡给予文件夹的适当权限 – gasroot 2013-05-23 17:01:40