2014-10-31 3 views
0

Это моя ссылка action на индексном представлении.Ошибка в пути к файлу загрузки в контроллере mvc

@Html.ActionLink("Download File", "Download", new { fileName = Model.OriginalRecordRelativeFilePath }) 


public FileResult Download(string fileName) 
{ 
    try 
    { 
      var fs = System.IO.File.OpenRead(Server.MapPath(ConfigurationHelper.IntegrationInterfaceFolderPath + fileName)); 
    // ConfigurationHelper.IntegrationFolderPath is a path for C:\Data\IntergrationInterface\ 

    return File(fs, "application/octet-stream", fileName); 
} 
catch 
{ 
     throw new HttpException(404, "Couldn't find " + fileName); 
} 

}

Я пытаюсь скачать файл из C: \ Data \ IntergrationInterface \ имя_файла. Но он не может найти путь к C: \ Data \ IntergrationInterface \ имя_файла и исключение исключения (Couldnt find fileName). Могу ли я узнать, есть ли способы загрузить файл из локального c при запуске веб-службы localhost на том же компьютере? Спасибо.

+0

Исключением не является. Существует ли файл? Проверьте путь, желательно, сохраняя его в отдельной переменной. Выполняется ли пользователь этим сайтом так же, как есть разрешения на чтение файла? – CodeCaster

+0

Да. Файл существует. Я создал фиктивный файл с именем path в C: \ Data \ IntergrationInterface \ path. пользователь этот сайт закодирован как системный администратор. Поэтому у него есть разрешение на чтение файла. – AhYap

+0

Измените код на 'string path = ConfigurationHelper.IntegrationInterfaceFolderPath + fileName; path = Server.MapPath (путь); var fs = System.IO.File.OpenRead (путь); '. Осмотрите переменные на каждом шаге. – CodeCaster

ответ

2

Не используйте здесь Server.MapPath, используя свой путь к файлу напрямую. Например, @ "C: \ Data \ IntergrationInterface \".

В настоящее время вы пытаетесь выполнить Server.MapPath (@ "C: \ Data \ IntergrationInterface \ file.txt"), это означает, что вы даете физический путь, где метод MapPath ожидает виртуальный путь. Вместо этого, если вы дадите Server.MapPath («\ ABC»), он вернет путь к серверу как «C: \ inetpub \ wwwroot \ ABC», который будет в основном вашим локальным путем сервера.

Смежные вопросы