如何将数据写入 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);
我可以像这样将数据写入 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);