如何将数据写入 ASP.NET MVC 中的 App_Data 文件夹?

How can I write data to the App_Data folder in ASP.NET MVC?

我可以像这样将数据写入 ASP.NET Web API 应用程序中的 App_Data 文件夹:

string appDataFolder = HttpContext.Current.Server.MapPath("~/App_Data/");
var htmlStr = // method that returns html as a string
string htmlFilename = "platypus.html";
string fullPath = Path.Combine(appDataFolder, htmlFilename);
File.WriteAllText(fullPath, htmlStr);

我想在 ASP.NET MVC 应用程序中做类似的事情(数据不同 - PDF 文件而不是 html 文件),但无法识别 "File"。我试试这个:

using (var ms = new MemoryStream())
. . .
var bytes = ms.ToArray();
string appDataFolder = AppDomain.CurrentDomain.GetData("DataDirectory").ToString();
string pdfFilename = "test.pdf";
string fullPath = Path.Combine(appDataFolder, pdfFilename);
File.WriteAllText(fullPath, bytes);

...但是,“'System.Web.Mvc.Controller.File(byte[], string)' 是一个 'method',在给定的上下文中无效'

首先,我不认为我的代码是错误信息似乎表明的那样,但是它不被接受,所以:如何我写数据到 ASP.NET MVC 中的 App_Data 文件夹?

看起来像是命名空间冲突。编译器正在从与预期不同的名称空间中获取 File。应该使这项工作的 File class 在 System.IO 命名空间而不是 System.Web.Mvc.Controller 命名空间中。

这可以通过在调用 File.WriteAllText() 时明确指定正确的命名空间来解决:

System.IO.File.WriteAllText(fullPath, bytes);