2016-05-11 2 views
1

я могу записать данные в папку App_Data в моем ASP.NET Web приложения API следующим образом:Как записать данные в папку App_Data в ASP.NET MVC?

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 (байт [], строка)' является '' метод, который не действует в данный контекст»"

в первую очередь, я не думаю, что мой код является то, что эээ тзд кажется, указывает, что это, но тем не менее это не принято, так: как может записать данные в папку App_Data в ASP.NET MVC?

+1

Попробуйте полностью отборочного 'File' ->' System.IO.File.WriteAllText' – petelids

+0

Да, это сделал; что это не вариант/предлагаемый или предложенный. –

ответ

3

Это похоже на столкновение пространства имен. Компилятор захватывает File из другого пространства имен, чем ожидалось. Класс File, который должен выполнить эту работу, находится в пространстве имен System.IO, а не в пространстве имен System.Web.Mvc.Controller.

Это может быть исправлено путем явного указания правильного пространства имен при вызове File.WriteAllText():

System.IO.File.WriteAllText(fullPath, bytes); 
Смежные вопросы