微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

“无法建立连接,因为目标机器主动拒绝它” Nethereum 异常

如何解决“无法建立连接,因为目标机器主动拒绝它” Nethereum 异常

我在 BSC 合约中使用 Nethereum 调用一个名为 owner()函数,该函数应该返回合约所有者的地址,但是当我使用 CallAsync() 方法时,出现异常“No connection can是因为目标机器主动拒绝了它"

我的代码(简化):

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 地址]”>

有谁知道我在这里做错了什么? (我已经简化了上面的代码,但我确实检查了该函数是否存在)

解决方法

我的问题原来是我初始化了没有参数的 Web3(),所以它默认使用 localhost 作为 RPC 客户端。我通过使用我需要的 RPC 客户端 url 初始化它来修复它,在这种情况下:

string rpcClient = "https://bsc-dataseed.binance.org/";
Web3 web3 = new Web3(rpcClient);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。