我正在使用Nethereum在平衡计分卡合同中调用一个名为owner()的函数,该函数应该返回合同所有者的地址,但是当我使用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请求时出错”,它有一个内部异常,消息是“发送请求时出错。”,它有自己的内部异常,有消息"Unable to connect to the remote server",这个异常有自己的内部异常,说“无法连接,因为目标机器主动拒绝了它的IP地址”。
有人知道我哪里做错了吗?(我简化了上面的代码,但我确实检查了函数是否存在)
发布于 2021-06-27 23:28:53
我的问题是我没有使用参数初始化Web3(),所以它默认使用localhost作为RPC客户端。我通过使用我需要的RPC客户端url初始化它来修复它,在本例中:
string rpcClient = "https://bsc-dataseed.binance.org/";
Web3 web3 = new Web3(rpcClient);https://stackoverflow.com/questions/68151293
复制相似问题