上传excel文件时,我收到此错误,有人可以帮助我吗?
访问路径 “C:\ DATA \ IronElements \上传\ AUMData \ 20101202 031815.xlsx'被拒绝。描述:期间发生了未处理的异常 当前网络的执行 请求。请查看堆栈跟踪 有关错误的更多信息 它起源于代码。
异常详细信息: System.UnauthorizedAccessException的: 访问路径 “C:\ DATA \ IronElements \上传\ 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");
}
}
答案 0 :(得分:4)
确保文件夹C:\ Data \ IronElements \ Upload \ AUMData对IIS执行上下文的用户具有NTFS写入权限。另外,请确保C:\ Data \ IronElements \ Upload的子文件夹继承其父级的权限。为此,请单击安全选项卡中的高级按钮 - >更改权限 - >使用此对象的可继承权限替换所有子对象权限 - >点击确定
答案 1 :(得分:1)
运行您的网络会话的帐户无权写入该文件夹。一旦您向ASP.Net帐户(或您使用的任何帐户)提供所需的权限,它应该按预期工作。
答案 2 :(得分:1)
转到您用于此应用程序的应用程序池,并将其身份更改为“网络服务”。我面对类似的问题并以同样的方式修复
答案 3 :(得分:0)
为了更好地处理这样的权限问题,我总是创建一个低权限的用户来运行我们的网站。用户以网站本身命名,因此很明显它的用途。
然后该用户只能在正确的文件夹中获取权限,在您的情况下,C:\ Data \ IronElements \ Upload \ AUMData。这也是限制数据库访问的好方法 - 在SQL中为特定用户创建一个具有最小权限的登录。