【问题标题】:How can I write data to the App_Data folder in ASP.NET MVC?如何将数据写入 ASP.NET MVC 中的 App_Data 文件夹?
【发布时间】:2016-09-07 03:54:13
【问题描述】:

我可以将数据写入我的 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 文件),但无法识别“文件”。我试试这个:

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)' 是一个'方法',在给定的上下文中是无效的' "

首先,我不认为我的代码是 err msg 所指示的那样,但它仍然不被接受,所以:可以如何将数据写入 App_Data 文件夹在 ASP.NET MVC 中?

【问题讨论】:

  • 尝试完全符合条件的File -> System.IO.File.WriteAllText
  • 是的,做到了;奇怪的是,这不是一个选项/提供或建议。

标签: c# asp.net-mvc pdf asp.net-web-api app-data


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    • 2011-05-24
    相关资源
    最近更新 更多