получить доступ к файлу на сервере в ASP.NET MVC - PullRequest
3 голосов
/ 05 ноября 2010

В моем приложении ASP.NET MVC я создаю отчеты Excel, у меня есть файл шаблона, который я копирую и изменяю.Этот файл шаблона находится в папке в моем решении.Я хочу использовать его следующим образом:

string templatePath = @"\Templates\report.xlsx";

using (var template = File.OpenRead(templatePath)) {
  // Copy template and process content
}

Но этот код генерирует исключение

 Couldnot find a part of the path 'C:\Templates\report.xlsx'.

Как мне ссылаться на этот файл?

Я также пытался использовать

string templatePath = @"~\Templates\report.xlsx";

Но это приводит к

Could not find a part of the path 'C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\~\Templates\report.xlsx'.

Это работает, однако, когда я использую абсолютный путь, но это не имеет смысла для моего производственного сервера.

Ответы [ 2 ]

8 голосов
/ 05 ноября 2010

Полагаю, вы бы сделали это обычным способом ASP.NET, предполагая, что Шаблоны - это каталог в вашем веб-приложении.

string templatePath = @"~\Templates\report.xlsx";

using (var template = File.OpenRead(Server.MapPath(templatePath))) {
  // Copy template and process content
}
0 голосов
/ 06 ноября 2010

Вам необходимо использовать Server.MapPath (путь)

string templatePath = Server.MapPath("~/Templates/report.xlsx"); //Note the forward slashes instead of backslashes.

using (var template = File.OpenRead(templatePath)) {
  // Copy template and process content
}

Это сопоставит путь виртуального каталога с полным путем на сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...