我在我的项目中使用CassiniDevServer。我创建了一个CassiniDevServer类的对象,然后调用它的start()方法传递适当的参数。
服务器在浏览器中正确托管和呈现网页。但过了一段时间,当刷新时,浏览器说
无法连接到localhost: portno
似乎服务器在一段时间后停止了。为什么会这样?我怎么能避免这个?是垃圾收集了吗?
我有一个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
的对象,然后调用此方法。此方法返回对当前创建的服务器实例的引用。我在调用代码类中分配了这个引用。
所以实际上我确实有两个类的引用,但我仍然觉得它正在收集垃圾。或者如果不是我不明白为什么几分钟后我刷新浏览器它显示无法连接到...
答案 0 :(得分:1)
而不是在CassiniDev中创建CassiniDevServer类的对象;包,我创建了一个Server类的对象,如下所示(因为它允许指定超时属性)
System.Net.IPAddress ip = System.Net.IPAddress.Parse("127.0.0.1");
Server _server1 = new Server(_portNo, "/", path, ip, "localhost", 1800000);
_server1.Start();
_portNo是任何端口号 - 可能在未使用的端口号范围内。我生成了一个动态和randomaly如下:
Random rn = new Random();
int _portNo = rn.Next(1500, 4000);
path是网站文件夹的物理路径(包含web.config,AppCode,AppData的文件夹)。
1800000是相当于30分钟的毫秒数。
指定/以在http://localhost地址托管网站:< _portNo> /
但任何人都可以澄清CassiniDevServer与CassiniDev包中的Server类之间的区别。
答案 1 :(得分:0)
您应该查看CassiniDevServer对象上的TimeOut选项。
这是自行关闭之前服务器处于空闲状态的时间量(以毫秒为单位)。我没有看到你在哪里设置这个,所以,很可能服务器本身正在关闭。
现在,只要你保持对它的引用,它就不会被垃圾收集。但由于上述原因,这是一个红鲱鱼。