0

我在我的项目中使用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然后调用此方法。此方法返回对当前创建的服务器实例的引用。我在调用代码类中分配了这个引用。

所以实际上我确实引用了这两个类,但我仍然觉得它正在收集垃圾。或者,如果不是,我不明白为什么几分钟后刷新浏览器时显示无法连接...

4

2 回答 2

1

而不是在 CassiniDev 中创建 CassiniDevServer 类的对象;包,我创建了一个服务器类的对象如下(因为它允许指定超时属性)

        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 包中的 Server 类之间的区别。

于 2012-04-28T16:23:54.980 回答
0

您应该查看 CassiniDevServer 对象上的 TimeOut 选项。

这是服务器在自行关闭之前将处于空闲状态的时间量(以毫秒为单位) 。我看不到你在哪里设置这个,所以,很可能服务器本身正在关闭。

现在,只要您保持对它的引用,它就不会被垃圾收集。但由于上述原因,这是一个红鲱鱼。

于 2012-04-25T23:35:02.497 回答