“无法建立连接,因为目标机器主动拒绝它” Nethereum 异常
Posted
技术标签:
【中文标题】“无法建立连接,因为目标机器主动拒绝它” Nethereum 异常【英文标题】:"No connection could be made because the target machine actively refused it" Nethereum exception 【发布时间】:2021-06-27 12:44:19 【问题描述】:我正在使用 Nethereum 在 BSC 合约中调用一个名为 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 请求时发生错误”,其中有一个内部异常消息“发送请求时发生错误。”,它有自己的内部异常,消息“无法连接到远程服务器”,而这个有自己的内部异常,说“无法建立连接,因为目标机器主动拒绝它[IP地址]”
有谁知道我在这里做错了什么? (我已经简化了上面的代码,但我确实检查了该函数是否存在)
【问题讨论】:
错误“目标机器主动拒绝”是由网络库中的 TCP 层引起的。这可能意味着一些事情。1)您正在尝试连接到环回 IP 地址 127.0.0.1。某些机器 localhost 被分配了环回。执行 Ping LocalHost 将判断是否为 localhost 分配了环回 2) 服务器未侦听您正在使用的端口号。 3)到IP地址的路由不存在。建立TCP连接后,还有很多其他可能出错的事情。第一步是解决“主动拒绝”错误。如果连接失败,则攻击其他问题。 @jdweng Ping LocalHost 究竟如何告诉我 localhost 是否分配了环回? 来自 PING 的响应是 IP(不是名称)。所以如果是环回的结果是127.0.0.1。 【参考方案1】:我的问题原来是我初始化了没有参数的 Web3(),所以它默认使用 localhost 作为 RPC 客户端。我通过使用我需要的 RPC 客户端 url 对其进行初始化来修复它,在这种情况下:
string rpcClient = "https://bsc-dataseed.binance.org/";
Web3 web3 = new Web3(rpcClient);
【讨论】:
以上是关于“无法建立连接,因为目标机器主动拒绝它” Nethereum 异常的主要内容,如果未能解决你的问题,请参考以下文章
“无法建立连接,因为目标机器主动拒绝它” Nethereum 异常
无法使用 monotorrent 下载 torrent(“无法建立连接,因为目标机器主动拒绝它”)
PHP Laravel:无法建立连接,因为目标机器主动拒绝它