无法连接到服务器
本文关键字:服务器 连接 | 更新日期: 2023-09-27 18:32:11
我在我的项目中使用了CassiniDevServer。我创建了一个CassiniDevServer类的对象,然后调用它的start()方法传递适当的参数。
服务器在浏览器中正确托管和呈现网页。但是过了一段时间,刷新时,浏览器说
无法连接到本地主机:端口号
似乎服务器在一段时间后停止了。为什么会这样?我怎样才能避免这种情况?是垃圾回收吗?
我有一个类MyCassiniDevUtil,它有以下方法:
public CassiniDevServer launchWebsite(string path, string navigate, int _portNo)
{
CassiniDevServer _server = new CassiniDevServer(); ///server
cassiniServerList.Add(_server);
_server.StartServer(path, _portNo, "/", "localhost");
portNo = _portNo;
System.Diagnostics.Process.Start("http://localhost:" + portNo +
"/" + navigate);
return _server;
}
在调用代码中,我创建了一个 MycassiniDevUtil
对象,然后调用此方法。此方法返回对当前创建的服务器实例的引用。我在调用代码类中分配此引用。
所以实际上我确实引用了这两个类,但我仍然觉得它被垃圾收集了。或者如果没有,我不明白为什么几分钟后当我刷新浏览器时它显示无法连接到......
我没有在CassiniDev;包中创建CassiniDevServer类的对象,而是创建了一个服务器类的对象,如下所示(因为它允许指定timeout属性)
System.Net.IPAddress ip = System.Net.IPAddress.Parse("127.0.0.1");
Server _server1 = new Server(_portNo, "/", path, ip, "localhost", 1800000);
_server1.Start();
_portNo是任何端口号 - 可能在未使用的端口号范围内。我动态和随机地生成了一个,如下所示:
Random rn = new Random();
int _portNo = rn.Next(1500, 4000);
path 是网站文件夹(包含 web.config、AppCode、AppData 的文件夹)的物理路径。
1800000 是 30 分钟的毫秒等效值。
/指定将网站托管在地址 http://localhost:<_portNo>/
但是谁能澄清CassiniDevServer和CassiniDev包中的服务器类之间的区别。
您应该查看CassiniDevServer对象上的TimeOut选项。
这是服务器在自行关闭之前处于空闲状态的时间量(以毫秒为单位)。 我没有看到您在哪里设置它,因此,很可能服务器本身正在关闭。
现在,只要您保持对它的引用,它就不会被垃圾回收。 但由于上述原因,这是一个红鲱鱼。