asp.net MVC3创建应用程序可以写入的文件夹
本文关键字:文件夹 net MVC3 创建 应用程序 asp | 更新日期: 2023-09-27 18:26:59
我需要在.Net MVC3应用程序中创建一个文件夹,用于在其中存储文件,但我认为这个问题在所有ASP.Net平台中都很常见。问题是我可以创建文件夹,但无法写入文件,因为发生了System.UnauthorizedAccessException
。我还试图给当前运行该网络应用程序的用户额外的权限,但没有任何变化。这是我迄今为止的代码:
if (!System.IO.Directory.Exists(fullPath))
{
System.IO.Directory.CreateDirectory(fullPath);
var user = System.Security.Principal.WindowsIdentity.GetCurrent().User;
var userName = user.Translate(typeof(System.Security.Principal.NTAccount));
var dirInfo = new System.IO.DirectoryInfo(fullPath);
var sec = dirInfo.GetAccessControl();
sec.AddAccessRule(new System.Security.AccessControl.FileSystemAccessRule(userName,
System.Security.AccessControl.FileSystemRights.Modify,
System.Security.AccessControl.AccessControlType.Allow)
);
dirInfo.SetAccessControl(sec);
System.IO.Directory.CreateDirectory(fullPath);
}
string fullPathFileName = System.IO.Path.Combine(fullPath, fileName);
System.IO.File.WriteAllBytes(fullPath, viaggio.Depliant.RawFile);
太糟糕了,最后一行代码总是抛出System.UnauthorizedAccessException
。我没有在我的应用程序中模拟用户,所有内容都在预定义的用户下运行。我应该如何创建文件夹并确保应用程序也可以在其中创建文件?
编辑:
我还尝试将文件保存在App_Data特殊文件夹中,但仍然出现System.UnauthorizedAccessException
错误。有人能告诉我为什么会发生这种事吗?
当问题如此愚蠢时,我讨厌回答自己的问题。。。我只是想在没有正确文件名的情况下保存一个文件:您可以看到,我使用fullPath
变量来创建文件夹和保存文件,而不是使用正确创建的fullPathFileName
。怪我!
使用App_Data文件夹,引用http://msdn.microsoft.com/en-us/library/06t2w7da%28v=vs.80%29.aspx:
为了提高ASP.NET应用程序使用的数据的安全性,已为ASP.NET应用程序添加了名为App_data的新子文件夹。存储在App_Data文件夹中的文件不会响应直接的HTTP请求而返回,这使App_Data成为与应用程序一起存储的数据(包括.mdf(SQL Server Express Edition)、.mdb(Microsoft Access)或XML文件)的推荐位置。请注意,使用App_Data文件夹存储应用程序数据时,应用程序的标识具有对App_Data文件夹的读写权限。