gpt4 book ai didi

c# - 正在删除文件,但访问被拒绝

转载 作者:可可西里 更新时间:2023-11-01 12:24:38 24 4
gpt4 key购买 nike

我有一个带有 Entity Framework 的 mvc4 应用程序。

我想删除一个文件,但每次它都说:

mscorlib.dll 中发生了“System.UnauthorizedAccessException”类型的异常,但未在用户代码中处理

其他信息:访问路径“G:\Mijn Documents\My Web Sites\Lolabikes - Copy\C#\ContosoUniversity\Images\”被拒绝。

通过这一行:System.IO.File.Delete(path);

这是方法:

public ActionResult DeleteFiles(int id)
{
//var fileName = Path.GetFileName(id.FileName);

var DirSeparator = Path.DirectorySeparatorChar;
var path = Server.MapPath("~\\Images" + DirSeparator);// + fileName.Replace('+', '_')));
var file = db.lolabikerPhotos.Find(id);
System.IO.File.Delete(path);
db.SaveChanges();

return Redirect(Url.Action("Edit", "Account") + "#tabs-3");

}

我只是在 visual studio 中运行该应用程序,如下所示:http://localhost:41787/Account/Edit?UserId=hallo

我已经做了以下事情:

对 map 的完全访问权限,我将网络服务添加到具有完全控制权的 map 中。但似乎没有任何效果。我正在使用 Windows 7。我以管理员身份运行 visual studio 2013

我也看到了这个:

ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6 and IIS 7, and the configured application pool identity on IIS 7.5) that is used if the application is not impersonating. If the application is impersonating via <identity impersonate="true"/>, the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user.

这里可以看到访问权限:

enter image description here

我尝试这样的事情:

 <system.web>

<identity impersonate="true" userName="Administrator" password="windowsPassword"/>
<httpRuntime requestValidationMode="2.0" maxRequestLength="1048576" executionTimeout="3600" />
<compilation debug="true" targetFramework="4.5" />

<pages validateRequest="false" />

<!--<httpRuntime targetFramework="4.5" />-->


</system.web>

我添加了这个:

<identity impersonate="true" userName="Administrator" password="windowsPassword"/> 

好的,我可以运行应用程序,但仍然报错:

Access to the path 'G:\Mijn Documents\My Web Sites\Lolabikes - Copy\C#\ContosoUniversity\Images\' is denied.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.UnauthorizedAccessException: Access to the path 'G:\Mijn Documents\My Web Sites\Lolabikes - Copy\C#\ContosoUniversity\Images\' is denied.

ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6 and IIS 7, and the configured application pool identity on IIS 7.5) that is used if the application is not impersonating. If the application is impersonating via <identity impersonate="true"/>, the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user.

To grant ASP.NET access to a file, right-click the file in File Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.

Source Error:


Line 489: var path = Server.MapPath("~\\Images" + DirSeparator);// + fileName.Replace('+', '_')));
Line 490: var file = db.lolabikerPhotos.Find(id);
Line 491: System.IO.File.Delete(path);
Line 492: db.SaveChanges();
Line 493:

完全权限:

enter image description here

高级选项卡: enter image description here

更改权限选项卡:

enter image description here

我这样编辑我的操作方法:

 public ActionResult DeleteFiles(int id)
{
var fileName = Path.GetFileName(@"\\Koala.jpg");

var DirSeparator = Path.DirectorySeparatorChar;
var path = Server.MapPath(@"\\Images" + DirSeparator + fileName.Replace('+', '_'));
var file = db.lolabikerPhotos.Find(id);
LolaBikePhoto lola = db.lolabikerPhotos.Find(id);
db.lolabikerPhotos.Remove(lola);
System.IO.File.Delete(path);


db.SaveChanges();

return Redirect(Url.Action("Edit", "Account") + "#tabs-3");

}

现在它正在运行!

最佳答案

我也遇到了这个问题,因此我在这篇文章上绊倒了。我在复制/删除之前和之后添加了以下代码行。

删除

File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);

复制

File.Copy(file, dest, true);
File.SetAttributes(dest, FileAttributes.Normal);

关于c# - 正在删除文件,但访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26577038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com