Не понятная ошибка TorSharp

176
10 ноября 2018, 14:40

Есть два метода которые я использую, и если я вызываю второй раз его прегрузку то выдает ошибку, ошибку напишу ниже Вот код методов

  public async Task<string> GetSourceByPageIdforTor(int id)
    {
        string currentUrl = url.Replace("{CurrentId}", id.ToString());
        var settings = new TorSharpSettings
        {
            ZippedToolsDirectory = Path.Combine(Path.GetTempPath(), "TorZipped"),
            ExtractedToolsDirectory = Path.Combine(Path.GetTempPath(), "TorExtracted"),
            PrivoxyPort = 1337,
            TorSocksPort = 1338,
            TorControlPort = 1339,
            TorControlPassword = "",
            ToolRunnerType = ToolRunnerType.VirtualDesktop,
            TorStrictNodes = false,
            ReloadTools = false,
            //  EnableSecurityProtocolsForFetcher= false
        };
        // download tools
        await new TorSharpToolFetcher(settings, new HttpClient()).FetchAsync();
        // execute
        var proxy = new TorSharpProxy(settings);
        var handler = new HttpClientHandler
        {
            Proxy = new WebProxy(new Uri("http://localhost:" + settings.PrivoxyPort))
        };
        await proxy.ConfigureAndStartAsync();
        //  await proxy.GetNewIdentityAsync();
        var configuration = Configuration.Default.WithDefaultLoader()
            .WithRequesters(handler)
            .WithCss()
            .WithJavaScript();
        var _context = BrowsingContext.New(configuration);
        var _document = await _context.OpenAsync(currentUrl);
        string source = null;
        if (_document.StatusCode == HttpStatusCode.OK)
        {
            source = _document.ToHtml();
        }
        proxy.Stop();
        return source;
    }
    public async Task<string> GetSourceByPageIdforTor(int id,string url)
    {
        var settings = new TorSharpSettings
        {
            ZippedToolsDirectory = Path.Combine(Path.GetTempPath(), "TorZipped"),
            ExtractedToolsDirectory = Path.Combine(Path.GetTempPath(), "TorExtracted"),
            PrivoxyPort = 1337,
            TorSocksPort = 1338,
            TorControlPort = 1339,
            TorControlPassword = "",
            ToolRunnerType = ToolRunnerType.VirtualDesktop,
            TorStrictNodes = false,
            ReloadTools = false,
            //  EnableSecurityProtocolsForFetcher= false
        };
        // download tools
        await new TorSharpToolFetcher(settings, new HttpClient()).FetchAsync();
        // execute
        var proxy = new TorSharpProxy(settings);
        var handler = new HttpClientHandler
        {
            Proxy = new WebProxy(new Uri("http://localhost:" + settings.PrivoxyPort))
        };
        var httpClient = new HttpClient(handler);
        await proxy.ConfigureAndStartAsync();
        // await proxy.GetNewIdentityAsync();
        var configuration = Configuration.Default.WithDefaultLoader()
            .WithRequesters(httpClientHandler)
            .WithCss()
            .WithJavaScript();
        proxy.Stop();
        var _context = BrowsingContext.New(configuration);
        var _document = await _context.OpenAsync(url);
        string source = null;
        if (_document.StatusCode == HttpStatusCode.OK)
        {
            source = _document.ToHtml();
        }
        proxy.Stop();
        return source;
    }

а вот два метода которые их вызывают

private async void WorckerTor()
    {
        for (int i = parserSettings.StartPoint; i <= parserSettings.EndPoint; i++)
        {
            if (!isActive)
            {
                OnCompleted?.Invoke(this);
                return;
            }
            var source = await loader.GetSourceByPageIdforTor(i);
            var domParser = new HtmlParser();
            var document = await domParser.ParseAsync(source);
            var result = parser.Parse(document);
            OnNewData?.Invoke(this, result);
        }
        OnCompleted?.Invoke(this);
        isActive = false;
    }
    private async void WorckerTor(List<string>url)
    {
        for (int i = 0; i < url.Count; i++)
        {
            if (!isActive)
            {
                OnCompleted?.Invoke(this);
                return;
            }
            var source = await loader.GetSourceByPageIdforTor(i,url[i]);
            var domParser = new HtmlParser();
            var document = await domParser.ParseAsync(source);
            var result = parser.Parse(document);
            OnNewData?.Invoke(this, result);
        }
        OnCompleted?.Invoke(this);
        isActive = false;
    }

вот ошибка Значение не может быть неопределенным. Имя параметра: handler

а когда вызываю первый раз то все норм любой из этих методов то ошибка

READ ALSO
C# наполнение массива textBox&#39;ами [дубликат]

C# наполнение массива textBox'ами [дубликат]

На данный вопрос уже ответили:

174
C# UDP Отправка сервера к клиенту байт выдает ошибку

C# UDP Отправка сервера к клиенту байт выдает ошибку

Всем привет! Когда сервер отправляет байт данных на уже отключенный клиент то я получаю вот такое исключение:

197
Удаление объекта из БД и combobox WPF

Удаление объекта из БД и combobox WPF

Ситуация следующая: у меня есть База данных(БД) Department у этой БД два поля id и DepNameЗадача: по нажатию кнопки "Удалить" - удалить объект из БД Department...

154
Выводить исключения в stderr

Выводить исключения в stderr

Подскажите пожалуйстаИсключения (exceptions) в C# по умолчанию выводятся в stdout, мне нужно их выводить в stderr (чтобы потом обработать только поток...

170