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错误。有人能告诉我为什么会发生这种事吗?

asp.net MVC3创建应用程序可以写入的文件夹

当问题如此愚蠢时,我讨厌回答自己的问题。。。我只是想在没有正确文件名的情况下保存一个文件:您可以看到,我使用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文件夹的读写权限。