«Невозможно установить соединение, потому что целевая машина активно отказалась от него» Исключение Nethereum
Я использую Nethereum для вызова функции с именем
owner()
в контракте BSC, который должен возвращать адрес владельца контракта, однако, когда я использую
CallAsync()
метод, я получаю исключение "Невозможно установить соединение, потому что целевая машина активно отказалась от него"
Мой код (упрощенный):
using (var s = webRequest.GetResponse().GetResponseStream())
{
using (var sr = new StreamReader(s))
{
string contractABIstr = sr.ReadToEnd();
JObject contractABI = JObject.Parse(contractABIstr);
string contractResults = (string)contractABI.SelectToken("result");
var web3 = new Web3();
var contract = web3.Eth.GetContract(contractResults, address);
Nethereum.Contracts.Function = contract.GetFunction("owner");
string owner = "";
Task<string> task = function.CallAsync<string>();
owner = await task;
}
}
При звонке на линию
owner = await task
, Я получаю исключение с сообщением «Произошла ошибка при попытке отправить запросы rpc», которое имеет внутреннее исключение с сообщением «Произошла ошибка при отправке запроса.», Которое имеет собственное внутреннее исключение с сообщением » Невозможно подключиться к удаленному серверу », и у этого есть собственное внутреннее исключение, говорящее« Невозможно установить соединение, потому что целевая машина активно отказалась от него [IP-адрес] »
Кто-нибудь знает, что я здесь делаю не так? (Я упростил приведенный выше код, но проверяю, существует ли функция)
1 ответ
Моя проблема оказалась в том, что я инициализировал Web3() без параметров, поэтому по умолчанию он использует localhost в качестве клиента RPC. Я исправил это, инициализировав его URL-адресом клиента RPC, который мне нужен, в этом случае:
string rpcClient = "https://bsc-dataseed.binance.org/";
Web3 web3 = new Web3(rpcClient);