我正在尝试使用FileUpload控件将上传的文件读取到服务器,但是,我收到以下错误:
ASP.NET无权访问所请求的资源。考虑 授予对ASP.NET请求的资源访问权限 身份。 ASP.NET具有基本进程标识(通常是 IIS 5上的{MACHINE} \ ASPNET或IIS 6上的网络服务)如果使用的话 该申请不是冒充。如果申请是 通过
<identity impersonate="true"/>
模仿,身份将是 匿名用户(通常是IUSR_MACHINENAME)或经过身份验证的用户 请求用户
我调查了,似乎该文件夹没有网络服务帐户的权限,所以我添加它但问题仍然存在。这是我的FileUpload控件的代码:
<asp:FileUpload ID="FileUpload1" runat="server" style="top: 164px; left: 12px; position: absolute; height: 22px; width: 281px" />
这是我用来在我的服务器中保存文件的代码:
protected void Button1_Click1(object sender, EventArgs e)
{
FileUpload1.SaveAs("C:\\folder\\autoTrack.xlsx");
StatusLabel.Text = FileUpload1.PostedFile.FileName;
if (FileUpload1.PostedFile.FileName != "")
{
this.readFile("C:\\folder\\autoTrack.xlsx"); //this is where the program crash due to lack of permissions!
}
else
{
StatusLabel.Text = "Select a file to start the process!";
}
}
c:\ folder文件夹的ACL具有具有完全控制权限的网络服务,并且允许继承传播到子对象。
此外,我读到在应用程序池的“身份”选项卡中使用域帐户可以解决问题,但如果我将身份从预定义的网络服务更改为我的域用户,则在尝试访问时出现“服务不可用”我的申请。
非常感谢您对此的任何帮助。
答案 0 :(得分:0)
首先,尝试在文件夹中授予Everyone权限,以查看它是否有效。如果是,那么只需找到正确的用户即可授予正确的权限。如果您在IIS上运行,则应该向应用程序池用户授予权限,如此处所述 - &gt; http://www.iis.net/learn/manage/configuring-security/application-pool-identities
答案 1 :(得分:0)
经过多次努力,我找到了问题。您必须在服务器中设置网络服务的DCOM属性。以下链接介绍了如何操作:
http://community.spiceworks.com/education/projects/Setting_The_Default_DCOM_Properties_And_Security
设置完毕后,我停止接收访问错误。