2014-10-22 3 views
2

Я пытаюсь установить кнопку, чтобы пользователь мог загрузить файл, сохраненный на сервере.WebClient DownloadFile - Доступ запрещен или не найден путь к пути

protected void btnDownloadHtmlFile_Click(object sender, EventArgs e) 
{ 
    string path = @"D:\web\mytestwebsite.com\www\temp\test.html"; 
    if (!File.Exists(path)) 
    { 
     File.Create(path); 
    } 

    TextWriter tw = new StreamWriter(path); 
    tw.WriteLine("<head></head><body>test</body>"); 
    tw.Close(); 

    WebClient webclient = new WebClient(); 
    webclient.DownloadFile(@"D:\web\mytestwebsite.com\www\temp\test.html", @"C:\web\test.html"); 
} 

Этот результат в Could not find a part of the path 'C:\web\test.html'. же, если я изменю для

webclient.DownloadFile(new Uri("http://mytestwebsite.com/temp/test.html"), @"C:\web\test.html"); 

Если я изменю для

webclient.DownloadFile(@"D:\web\mytestwebsite.com\www\temp\test.html", "test.html"); 

или

webclient.DownloadFile(new Uri("http://mytestwebsite.com/temp/test.html"), "test.html"); 

Я получаю доступ на путь «C: \ Windows \ SysWOW64 \ inetsrv \ test.html» отрицается.

Наконец, я пошел в папку C: \ Windows \ SysWOW64 \ inetsrv, чтобы предоставить разрешения NETWORK SERVICE, но он говорит, что доступ запрещен. Я зарегистрирован как администратор на сервере.

Я прочитал несколько сообщений об этом, но ничего не работает, или я что-то пропустил.

Что такое правильный способ использования WebcClient.DownloadFile?

+0

Во-первых, почему вам нужно создать файл на сервере и сохранить его на сервере еще раз? –

ответ

3

Получил ваш вопрос в голову. Когда вы использовали webclient.DownloadFile(new Uri("http://mytestwebsite.com/temp/test.html"), @"C:\web\test.html");, убедитесь, что у вас есть каталог web в C:\. Я имею в виду, что у вас есть C:\web в вашей файловой системе. Иначе это вызовет ошибку. Потому что для этого нужен каталог, чтобы он мог просто создать новый файл.

Когда вы сделали webclient.DownloadFile(@"D:\web\mytestwebsite.com\www\temp\test.html", "test.html");, он попытался создать файл в текущем объеме файла выполнения, то есть C:\Windows\SysWOW64\inetsrv\, и там он попытался создать файл из-за доступа, он не может создать файл там.

Решение, попробуйте использовать следующий код, он должен создать файл в D:\web.

webclient.DownloadFile(new Uri("http://mytestwebsite.com/temp/test.html"), @"D:\web\test.html");

EDIT

Отказ Вы делаете это неправильно (если я не ясно, о требовании), DownloadFile это загрузить URL для локального сервера, то теперь точка для загрузки локальный файл и сохранение этого, чтобы снова локальное местоположение, оно похоже на файл save as в любое другое место.

EDIT

Чтобы разрешить конечному пользователю скачать файл использовать следующий код.

Response.Clear(); 
Response.ContentType = "text/html"; 
Response.AddHeader("Content-Disposition", "attachment;filename=a.html"); // replace a.html with your filename 
Response.WriteFile(@"D:\webfile\a.html"); //use your file path here. 
Response.Flush(); 
Response.End(); 
+0

Неправильное использование файла webclient.download - он будет загружать файл в локальный файл на сервере, а не на клиента – Swomble

+0

Но в соответствии с требованием OP он решит цель, и он будет загружаться на серверное место, это то, что OP хочет? –

+0

Они хотят загрузить файл, сохраненный на сервере – Swomble

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