"No connection could be made because the target machine actively refused it" 以太坊异常
"No connection could be made because the target machine actively refused it" Nethereum exception
我正在使用 Nethereum 在 BSC 合约中调用一个名为 owner()
的函数,该函数应该 return 合约所有者的地址,但是当我使用 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 请求时发生错误”,它有一个内部异常消息“发送 RPC 请求时发生错误”请求。”,它有自己的内部异常,消息为“无法连接到远程服务器”,而这个有自己的内部异常,说“无法建立连接,因为目标机器主动拒绝它 [IP 地址]”
有谁知道我在这里做错了什么? (我已经简化了上面的代码,但我确实检查了该函数是否存在)
我的问题原来是我初始化了没有参数的 Web3(),所以它默认使用 localhost 作为 RPC 客户端。我通过使用我需要的 RPC 客户端 url 初始化它来修复它,在这种情况下:
string rpcClient = "https://bsc-dataseed.binance.org/";
Web3 web3 = new Web3(rpcClient);
我正在使用 Nethereum 在 BSC 合约中调用一个名为 owner()
的函数,该函数应该 return 合约所有者的地址,但是当我使用 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 请求时发生错误”,它有一个内部异常消息“发送 RPC 请求时发生错误”请求。”,它有自己的内部异常,消息为“无法连接到远程服务器”,而这个有自己的内部异常,说“无法建立连接,因为目标机器主动拒绝它 [IP 地址]”
有谁知道我在这里做错了什么? (我已经简化了上面的代码,但我确实检查了该函数是否存在)
我的问题原来是我初始化了没有参数的 Web3(),所以它默认使用 localhost 作为 RPC 客户端。我通过使用我需要的 RPC 客户端 url 初始化它来修复它,在这种情况下:
string rpcClient = "https://bsc-dataseed.binance.org/";
Web3 web3 = new Web3(rpcClient);