C# 上载excel文件时拒绝访问路径

C# 上载excel文件时拒绝访问路径,c#,asp.net,asp.net-3.5,C#,Asp.net,Asp.net 3.5,上传excel文件时,我收到此错误,有人能帮我吗 访问路径 'C:\Data\IronElements\Upload\AUMData\20101202 031815.xlsx'被拒绝。描述:过程中发生未处理的异常 当前web的执行 要求请查看堆栈跟踪 有关错误的详细信息,请参见 以及它在代码中的起源 例外情况详情: System.UnauthorizedAccess异常: 访问路径 'C:\Data\IronElements\Upload\AUMData\20101202 031815.xlsx

上传excel文件时,我收到此错误,有人能帮我吗

访问路径 'C:\Data\IronElements\Upload\AUMData\20101202 031815.xlsx'被拒绝。描述:过程中发生未处理的异常 当前web的执行 要求请查看堆栈跟踪 有关错误的详细信息,请参见 以及它在代码中的起源

例外情况详情: System.UnauthorizedAccess异常: 访问路径 'C:\Data\IronElements\Upload\AUMData\20101202 031815.xlsx'被拒绝

ASP.NET无权访问 请求的资源。考虑 授予对资源的访问权限 到ASP.NET请求标识。 ASP.NET具有基本进程标识 (通常是IIS 5上的{MACHINE}\ASPNET 或IIS 6)上的网络服务 如果应用程序不可用,则使用 模仿。如果申请是 通过,身份 将是匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的 请求用户

要授予ASP.NET对文件的访问权限, 在资源管理器中的文件上单击鼠标右键, 选择“属性”并选择 安全选项卡。单击“添加”以添加 适当的用户或组。突出 打开ASP.NET帐户,然后检查 用于所需访问的框

源错误:

生成了一个未处理的异常 在执行当前 网络请求。有关 例外的来源和位置 可以使用异常来识别 堆栈跟踪如下

我的代码隐藏文件具有以下语法

DateTime date = DateTime.Now;
                string FileName = Convert.ToString(date.ToString("yyyyMMdd hhmmss"));
                Directory.CreateDirectory("C:\\Data\\IronElements\\Upload\\AUMData\\Schema");
                doesFileExists("C:\\Data\\IronElements\\Upload\\AUMData\\Schema");
                fileUpload.PostedFile.SaveAs("C:\\Data\\IronElements\\Upload\\AUMData\\" + FileName + ".xlsx");
                System.Threading.Thread.Sleep(5000);
                string connectionString = WebConfigurationManager.ConnectionStrings["SQLConnection"].ConnectionString;
                SqlConnection SqlConnect = new SqlConnection(connectionString);

                try
                {
                    SqlConnect.Open();
                    SqlCommand cmdAssetUnderManagement = new SqlCommand("Exec_Insert_AUMAssetValue", SqlConnect);
                    cmdAssetUnderManagement.CommandType = CommandType.StoredProcedure;
                    cmdAssetUnderManagement.ExecuteNonQuery();

                }


                catch (Exception ex)
                {
                    Response.Write(ex.Message);
                }
                finally
                {
                    SqlConnect.Close();
                }
                lblAUMTA.Visible = true;
                lblAUMTA.Text = "File Upload Completed";
            }
    private void doesFileExists(string p)
            {
                p = string.Concat(p, "\\AUMSchema.xlsx");
                if (!File.Exists(p))
                {
                    fileUpload.PostedFile.SaveAs("C:\\Data\\IronElements\\Upload\\AUMData\\Schema\\AUMSchema.xlsx");
                }
            }

确保文件夹C:\Data\IronElements\Upload\AUMData对执行上下文IIS的用户具有NTFS写入权限。另外,请确保C:\Data\IronElements\Upload的子文件夹继承了其父文件夹的权限。要执行此操作,请单击“安全”选项卡中的“高级”按钮->更改权限->选中“将所有子对象权限替换为此对象的可继承权限->点击“确定”

运行web会话的帐户没有写入该文件夹的权限。一旦您授予ASP.Net帐户(或您正在使用的任何帐户)所需的权限,它将按预期工作。

为了更好地处理此类权限问题,我总是创建一个低权限用户来运行我们的网站。用户是以网站本身的名字命名的,所以很明显这是为了什么


然后,该用户只能在正确的文件夹(在您的示例中为C:\Data\IronElements\Upload\AUMData)上获得perm。这也是限制数据库访问的一个好方法-使用最小权限在SQL中为特定用户创建登录名。

转到用于此应用程序的应用程序池,并将其标识更改为“网络服务”。我遇到了类似的问题,并以相同的方式修复了该问题

它确实具有读写权限确保它具有运行ASP.NET进程的帐户的权限。哦,还要确保它是在你认为它是的帐户下运行的。好的,这不是一个好主意,但试试看。为该文件夹分配读/写给每个人角色,并查看发生了什么。上传应该在那之后工作。它确实检查过,它在我需要的帐户下运行,我已经在这个问题上工作了将近2天。通过添加不同的帐户尝试了所有可能的方法。确实为每个人分配了读/写权限,但仍然不起作用。我使该文件夹可以通过网络服务完全控制访问,并将该文件夹设置为共享文件夹。但它仍然不起作用