Есть файл данных и несколько файлов изображений, которые я должен загружать на наши локальные серверы каждую ночь с помощью asp.net. Как лучше всего это сделать?
ОБНОВИТЬ
Хорошо, после просмотра ответов я вижу, что мое первоначальное сообщение об использовании asp.net - плохой выбор. Как бы вы написали это для консольного приложения на C#. Я не уверен, какие классы я использую для подключения и загрузки файлов с удаленного сервера.
Спасибо





Чтобы делать это каждую ночь, вы должны настроить его как запланированную задачу на своем сервере, чтобы попасть на определенную веб-страницу asp.net для выполнения нужного вам кода.
На вашей странице ASP.NET будет код для выхода, загрузки файла и выполнения необходимой обработки.
Плохое решение. Это бесполезно направляет логику через две отдельные парадигмы. Веб-сайты / приложения не должны использоваться для управления логикой обслуживания. Если у вас есть требование только к сервису, напишите сервисное или консольное приложение.
Извините, TheTXI, но если программист спрашивает, как использовать неправильную парадигму, чтобы получить то, что ему нужно, я предлагаю ему вместо этого использовать лучшую, более чистую парадигму. Вы не должны подбирать плохое решение проблемы, просто чтобы оставаться в контексте того, что удобно программисту.
TheTXI, если вы собираетесь предложить что-то вроде того, чтобы запланированная задача «попала» на страницу ASP.NET и выполнила ее код, вам лучше дать лучшее объяснение того, как это произойдет. В противном случае я не удивлюсь, если это будет быстро отклонено.
Обычно вы не делаете этого через ASP.NET. Код веб-страницы выполняется только при выполнении запроса HTTP / HTTPS, который обычно запускается конечными пользователями с помощью веб-браузера или поисковых роботов.
Вы хотите использовать что-то вроде FTP для загрузки файлов и службу Windows для автоматизации запуска загрузки.
ОБНОВЛЕНО в ответ на обновление вопроса:
Вы можете легко выполнить поиск Гугл, чтобы найти много информации о загрузке через FTP в .NET.
Обратите внимание на этот Клиентская библиотека FTP C#.
А вот несколько хороших ссылок по созданию службы Windows в .NET:
http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx
Метод DownloadFile в классе System.Net.WebClient, вероятно, хорошее место для начала. Вы даете ему строку URL и имя файла, а он делает все остальное. System.NET.WebClient в MSDN
Вы даже можете установить пользовательские строки агента и загружать файлы с помощью этого класса.
Если вы не можете сделать это с помощью FTP, вы хотите использовать HttpWebRequest и HttpWebResponse для выполнения этой работы. Из MSDN:
using System;
using System.Net;
using System.Text;
using System.IO;
public class Test
{
// Specify the URL to receive the request.
public static void Main (string[] args)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create (args[0]);
// Set some reasonable limits on resources used by this request
request.MaximumAutomaticRedirections = 4;
request.MaximumResponseHeadersLength = 4;
// Set credentials to use for this request.
request.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse response = (HttpWebResponse)request.GetResponse ();
Console.WriteLine ("Content length is {0}", response.ContentLength);
Console.WriteLine ("Content type is {0}", response.ContentType);
// Get the stream associated with the response.
Stream receiveStream = response.GetResponseStream ();
// Pipes the stream to a higher level stream reader with the required encoding format.
StreamReader readStream = new StreamReader (receiveStream, Encoding.UTF8);
Console.WriteLine ("Response stream received.");
Console.WriteLine (readStream.ReadToEnd ());
response.Close ();
readStream.Close ();
}
}
/*
The output from this example will vary depending on the value passed into Main
but will be similar to the following:
Content length is 1542
Content type is text/html; charset=utf-8
Response stream received.
<html>
...
</html>
*/
"How would you write it for a console app in C#."
Создайте консольное приложение C#. Добавьте ссылку на System.Net.
using System;
using System.Net;
namespace Downloader
{
class Program
{
public static void Main(string[] args)
{
using (WebClient wc = new WebClient())
{
wc.DownloadFile("http://www.mydomain.com/resource.img", "c:\\savedImage.img");
}
}
}
}
Чтобы загрузить любой файл с удаленного URL-адреса, вы можете использовать WebClient на C# внутри пространства имен System.Net.
публичная песня FileResult (струнная песня) {
WebClient client = new WebClient();
var stream = client.OpenRead("http://www.jplayer.org/audio/mp3/Miaow-03-Lentement.mp3");
return File(stream, "audio/mpeg");
}
Для загрузки данных каждую ночь вы можете использовать планировщик задач. http://www.quartz-scheduler.net/ может помочь вам в планировании задач
если вы собираетесь проголосовать против, по крайней мере, приведите логическую причину. Если он говорит, что должен делать это с помощью ASP.NET, вы можете объяснить, как это сделать с помощью ASP.NET, не говоря ему, что он просто категорически делает это неправильно.