访问临时文件夹时,ASP.NET无权访问所请求的资源

时间:2014-11-06 15:29:41

标签: c# asp.net iis

我使用ASP.NET和C#创建的应用程序使用临时路径来存储文档,然后删除它:

string path = string.Concat((Server.MapPath("~/temp/" + FileUpload1.FileName)));

Array.ForEach(Directory.GetFiles((Server.MapPath("~/temp/"))), File.Delete);

谢谢你的任何帮助。 StockControl文档是一个示例,可以从网络上的多台计算机导入。根据错误消息,我的文件似乎没有上传并保存到临时目录...

调试时的

本地路径(WORKS):

C:\Users\USER\Documents\Visual Studio 2013\Projects\WebApplication5\WebApplication5\temp

应用程序已成功部署但是当我附加文件并按“导入”时,我会显示一条错误消息: 访问路径'C:\ inetpub \ wwwroot \ StockControl \ temp \ Book1.xls'被拒绝。

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. 
  

异常详细信息:System.UnauthorizedAccessException:访问   路径'C:\ inetpub \ wwwroot \ StockControl \ temp \ Book1.xls'被拒绝。

     

ASP.NET无权访问所请求的资源。考虑   授予对ASP.NET请求的资源访问权限   身份。 ASP.NET具有基本进程标识(通常是   IIS 5上的{MACHINE} \ ASPNET或IIS 6和IIS 7上的网络服务,以及   IIS 7.5上配置的应用程序池标识,如果使用的话   该申请不是冒充。如果申请是   冒充通过,身份将是   匿名用户(通常是IUSR_MACHINENAME)或经过身份验证的用户   请求用户。

     

要授予对文件的ASP.NET访问权限,请右键单击“文件”中的文件   在Explorer中,选择“属性”,然后选择“安全”选项卡。点击“添加”   添加适当的用户或组。突出显示ASP.NET帐户,   并选中所需访问的框。

     

来源错误:

     

执行期间生成了未处理的异常   当前的网络请求。有关的来源和位置的信息   可以使用下面的异常堆栈跟踪来识别异常。

2 个答案:

答案 0 :(得分:6)

我有同样的问题。

进行了以下更改以解决问题。

(1)我去了wwwroot文件夹。右键单击和安全选项卡。提供 IISUSER 以设置对wwwroot文件夹的读写权限。

(2)将应用程序池更改为单独的池,并将标识设置为应用程序池标识。

答案 1 :(得分:5)

一个非常简单的解决方案来解决我的问题,在IIS中,我必须右键单击Application Pools并将.NET Framework V4设置为Integrated而不是classic /

另一个解决方案是将要访问的特定文件夹设置为对需要它的用户进行读/写,这可以由唯一用户或组织,一组用户完成