Есть два метода которые я использую, и если я вызываю второй раз его прегрузку то выдает ошибку, ошибку напишу ниже Вот код методов
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
а когда вызываю первый раз то все норм любой из этих методов то ошибка
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Всем привет! Когда сервер отправляет байт данных на уже отключенный клиент то я получаю вот такое исключение:
Ситуация следующая: у меня есть База данных(БД) Department у этой БД два поля id и DepNameЗадача: по нажатию кнопки "Удалить" - удалить объект из БД Department...
Подскажите пожалуйстаИсключения (exceptions) в C# по умолчанию выводятся в stdout, мне нужно их выводить в stderr (чтобы потом обработать только поток...