2012-03-05 47 views
0

我需要创建一个用于在其内存储的文件,在.NET MVC3应用程序的文件夹写,但我认为这个问题是共同所有ASP.Net平台。 问题是我可以创建文件夹,但无法写入文件,因为发生了System.UnauthorizedAccessException。 我也尝试给当前运行该web应用程序的用户提供额外的权限,但没有任何更改。 这是我到目前为止的代码:asp.net MVC3创建文件夹,应用程序可以在

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。 我不是在我的应用中模拟用户,一切都在预定义的用户下运行。 我该如何创建一个文件夹并确保应用程序也可以在其中创建文件?

编辑:

我也tryed保存在App_Data特殊文件夹中的文件,但我还是得到了System.UnauthorizedAccessException错误。有人可以告诉我为什么会发生这种情况?

回答

1

我不想回答我自己的问题,当问题是愚蠢的... 我只是想保存文件没有一个合适的文件名:你可以看到我使用fullPath变量都用于创建文件夹并保存该文件,而不是使用正确创建的fullPathFileName。 责备我吧!

0

使用App_Data文件夹,报价从http://msdn.microsoft.com/en-us/library/06t2w7da%28v=vs.80%29.aspx

要提高你的ASP.NET应用程序使用的数据的安全性,已经添加了一个名为的App_Data新的子ASP.NET应用程序。存储在App_Data文件夹中的文件不会响应直接HTTP请求而返回,这会使App_Data文件夹成为与您的应用程序一起存储的数据的推荐位置,包括.mdf(SQL Server Express Edition),.mdb(Microsoft Access)或XML文件。请注意,使用App_Data文件夹存储应用程序数据时,应用程序的标识具有对App_Data文件夹的读写权限。

+0

我不能使用App_Data文件夹:需要上传很多的文件,可能是大了,我的要求是解耦数据文件夹 – themarcuz 2012-03-05 13:50:48

+0

应用程序部署。此外,我tryed在偶数保存文件App_Data文件夹(暂时解决并继续开发),但它不起作用...同样的错误发生 – themarcuz 2012-03-05 16:13:59

+1

你可以检查服务器吗IIS_IUSRS组有读/写访问App_Data文件夹吗? – 2012-03-05 16:19:26

相关问题