WebClient.DownloadFile - неверный URI: не удалось проанализировать имя хоста
Поэтому я попробовал это в нескольких разных форматах и дал разные результаты. Я включу всю соответствующую информацию ниже.
Моя компания использует веб-приложение для планирования генерации отчетов. Служба отправляет по электронной почте URL-адрес, по которому можно щелкнуть, и сразу же откроется диалоговое окно "Открыть как отменить". Я пытаюсь автоматизировать процесс загрузки этих отчетов с помощью сценария C# в рамках проекта Visual Studio (конечная цель - импортировать эти отчеты в SQL Server).
Я сталкиваюсь с ужасной трудностью при запуске загрузки этого файла с помощью WebClient. Вот наиболее близкий вариант, который я получил с любым из методов, которые я пробовал:
* ПРИМЕЧАНИЕ. Я удалил всю идентифицирующую информацию из URL, но оставил все специальные символы и базовую архитектуру без изменений. Надеюсь, это будет удачное средство защиты конфиденциальной информации и предоставления вам достаточного количества информации, чтобы понять мою дилемму. URL работает, когда вручную копируется и вставляется в адресную строку Internet Explorer.
Сообщение об ошибке:
"Неверный URI: не удалось проанализировать имя хоста."
public void Main()
{
using (var wc = new System.Net.WebClient())
{
wc.DownloadFile(
new Uri(@"http:\\webapp.locality.company.com\scripts\rds\cgigetf.exe?job_id=3058352&file_id=1&format=TAB\report.tab"),
@"\\server\directory\folder1\folder2\folder3\...\...\...\rawfile.tab");
}
}
Обратите внимание, что я попытался установить:
string sourceUri = @"http:\\webapp.locality.company.com\scripts\rds\cgigetf.exe?job_id=3058352&file_id=1&format=TAB\report.tab\abc123_3058352.tab";
Uri uriPath;
Uri.TryCreate(sourceUri, UriKind.Absolute, out uriPath);
Но uriPath остается нулевым - TryCreate не работает.
Я попытался сделать webrequest / webresponse / WebStream, но он все еще не может найти хост.
Я попытался включить URL-адрес загрузки (как в моем первом примере кода) и URL-адрес загрузки + имя файла (как в моем втором примере кода). Мне не нужно имя файла в URL, чтобы начать загрузку, если я делаю это вручную. Я также пытался заменить часть URL-адреса "report.tab" именем файла, но безрезультатно.
Помощь очень ценится, поскольку у меня просто кончились мысли по этому поводу. Единственная идея, которую я оставил, заключается в том, что, возможно, один из специальных символов в моем URL мешает, но я не знаю, какой это будет или как правильно с ним обращаться.
Заранее спасибо!
1 ответ
Первой моей мыслью было бы то, что обратные слеши вашего URI интерпретируются как escape-символы, что приводит к бессмысленному результату после оценки. Я хотел бы попробовать быстрый тест, где каждый обратный слэш экранируется как сам по себе (то есть "\" вместо "\" в каждом случае). Я также немного озадачен тем, почему ваш URI не использует косую черту...?
// Create an absolute Uri from a string.
Uri absoluteUri = new Uri("http://www.contoso.com/");
Ссылка: Uri Конструктор на MSDN