Как исправить System.Net.WebException: «Неверный синтаксис имени файла, имени каталога или метки тома - PullRequest
1 голос
/ 10 июля 2019

Я пытаюсь создать загрузчик для программы, и появляется сообщение об ошибке «System.Net.WebException:« Неверный синтаксис имени файла, имени каталога или метки тома ».

Я застрял в этой проблеме и угадал, как ее решить.

String pname = "Fredysploit_v2";
String dlink = "https://pastebin.com/V5NcE09n";
string title = @"Title ";
Console.Title = pname + " Bootstrapper";

Console.ForegroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine(title);
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Downloading new Files...");
WebClient wc = new WebClient();
string key = wc.DownloadString(dlink);
string path = @"Update\" + pname + ".exe";
System.Net.WebClient Dow = new WebClient();
string patch = (@"Update");
Directory.CreateDirectory(patch);
//My problem ↓
Dow.DownloadFile(key, path);
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine(pname + " Downloaded | Updated!");
Console.WriteLine($"Now open " + patch + " and Run " + pname + ".exe");
Console.ReadKey();

Я ожидал, что результат загрузит файл из текста, который является ссылкой на pastebin, но фактическим результатом было «System.Net.WebException:« Имя файла, имя каталога или синтаксис метки тома неверен ».

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Проблема в том, что вы получаете всю страницу HTML-кода, а не URL-адрес, который вы ищете. Как упоминал @Jon Skeet в комментариях, попробуйте использовать https://pastebin.com/raw/V5NcE09n как dlink, чтобы оно выглядело следующим образом:

String dlink = "https://pastebin.com/raw/V5NcE09n";

Обновленный код решения ниже:

String pname = "Fredysploit_v2";
String dlink = "https://pastebin.com/raw/V5NcE09n";
string title = @"Title ";
Console.Title = pname + " Bootstrapper";

Console.ForegroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine(title);
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Downloading new Files...");
WebClient wc = new WebClient();
string key = wc.DownloadString(dlink);
string path = @"Update\" + pname + ".exe";
System.Net.WebClient Dow = new WebClient();
string patch = (@"Update");
Directory.CreateDirectory(patch);

Dow.DownloadFile(key, path);
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine(pname + " Downloaded | Updated!");
Console.WriteLine($"Now open " + patch + " and Run " + pname + ".exe");
Console.ReadKey();
0 голосов
/ 10 июля 2019

Я думаю, что происходит то, что вы пытаетесь загрузить весь веб-сайт в виде файла, а не загружаете файл, связанный с вашим содержимым для вставки ( подтверждение здесь ).

Может быть, есть способ получить ссылку, например: парсинг html сайта и чтение содержимого из определенного html тэга или, если он есть, с использованием API pastebin (я сейчас проверю этот. Существует API пастбина . Может быть, посмотрите на это)


Поскольку API не очень вам помогает, вот некоторый код для анализа HTML извеб-сайт: WebClient client = new WebClient(); String htmlCode = client.DownloadString("<a href="https://pastebin.com/raw/dnfHuGAK" rel="nofollow noreferrer">https://pastebin.com/raw/dnfHuGAK</a>");

Это позволяет вам получить строку внутри вставки.


Это будет вашим последним изменением кода и должно исправить вашу проблему

    String pname = "Fredysploit_v2";
    String dlink = "https://pastebin.com/raw/dnfHuGAK"; 
    //^ changed the download link to the raw paste so you can extract your link
    string title = @"Title ";
    Console.Title = pname + " Bootstrapper";

    Console.ForegroundColor = ConsoleColor.Blue;
    Console.ForegroundColor = ConsoleColor.Cyan;
    Console.WriteLine(title);
    Console.ForegroundColor = ConsoleColor.Green;
    Console.WriteLine("Downloading new Files...");
    WebClient wc = new WebClient();
    string key = wc.DownloadString(dlink);
    string path = @"Update\" + pname + ".exe";
    System.Net.WebClient Dow = new WebClient();
    string patch = (@"Update");
    Directory.CreateDirectory(patch);
    Dow.DownloadFile(key, path);
    Console.ForegroundColor = ConsoleColor.Green;
    Console.WriteLine(pname + " Downloaded | Updated!");
    Console.WriteLine($"Now open { patch } and Run { pname }.exe");
    //^ since you are using String.Format(), make use of it :)
    Console.ReadKey();
...