«Невозможно установить соединение, потому что целевая машина активно отказалась от него» Исключение 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);
Другие вопросы по тегам