0

我正在尝试使用 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 具有具有完全控制权限的网络服务,并且启用了继承以传播到子对象。

此外,我读到在应用程序池的“身份”选项卡中使用域帐户可以解决问题,但是如果我将身份从预定义的网络服务更改为我的域用户,则在尝试访问我的应用程序时出现“服务不可用”。

对此的任何帮助都非常感谢。

4

2 回答 2

0

首先,尝试在文件夹中授予所有人权限,看看它是否有效。如果是这样,那么只需找到正确的用户来授予正确的权限。如果您在 IIS 上运行,则应按照此处的说明向应用程序池用户授予权限-> http://www.iis.net/learn/manage/configuring-security/application-pool-identities

于 2013-04-08T15:45:32.967 回答
0

经过一番挣扎,我终于找到了问题所在。您必须在服务器中设置网络服务的 DCOM 属性。下面的链接描述了如何做到这一点:

http://community.spiceworks.com/education/projects/Setting_The_Default_DCOM_Properties_And_Security

设置后,我停止接收访问错误。

于 2013-04-09T17:13:26.480 回答