【问题标题】:Unable to connect to server无法连接到服务器
【发布时间】:2012-04-25 21:10:51
【问题描述】:

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

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

【问题讨论】:

  • 如果没有看到你是如何构建它的等等,它将无法回答。请显示一些代码。
  • 我写了一个 MyCassiniDevUtil 类,它有下面给出的方法
  • 原始问题中添加的代码

标签: c# asp.net cassini cassini-dev


【解决方案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 是任何端口号 - 可能在未使用的端口号范围内。我动态随机生成一个如下:

        Random rn = new Random();
        int _portNo = rn.Next(1500, 4000);

path 是网站文件夹的物理路径(包含 web.config、AppCode、AppData)。

1800000 相当于 30 分钟的毫秒数。

/ 指定获取地址为http://localhost的网站:<_portno>/

但是谁能澄清 CassiniDevServer 和 CassiniDev 包中的 Server 类之间的区别。

【讨论】:

  • 感谢 Mahesha999 你救了我的命
  • @embarus 如果您了解 CassiniDevServer 和 CassiniDev 包中的 Server 类之间的区别,请不要忘记回复
  • 好的。目前我还没有看到两个类之间有任何区别。 :)
【解决方案2】:

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

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

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

【讨论】:

  • 如何设置 CassiniDev 的超时时间?
猜你喜欢
  • 2019-10-08
  • 2020-01-24
  • 1970-01-01
  • 2011-12-29
  • 2018-12-09
  • 2020-05-05
  • 2014-10-22
  • 2019-12-03
  • 2016-09-02
相关资源
最近更新 更多