2012-04-25 20 views
0

我在我的项目中使用CassiniDevServer。我创建了CassiniDevServer类的一个对象,然后通过适当的参数调用它的start()方法。无法连接到服务器

服务器托管并在浏览器中正确呈现网页。但一段时间后,刷新时,浏览器说

无法连接到本地主机: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

没有看到你是如何构建它等它将无法回答。请显示一些代码。 – NotMe 2012-04-25 23:19:36

+0

我写了一个类MyCassiniDevUtil,其中有以下给出的方法 – Mahesha999 2012-04-25 23:22:33

+0

原代码中添加的代码 – Mahesha999 2012-04-25 23:28:03

回答

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是任何端口号 - 可能在未使用的端口号码的范围。我生成一个动态和randomaly如下:

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

路径是到该网站的文件夹(其中包含的web.config,AppCode,应用程序数据的一个)的物理路径。

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

指定/获取地址http://localhost主办的网站:< _portNo>/

但是,任何人都可以澄清什么CassiniDevServer和CassiniDev包服务器类之间的差别。

+0

谢谢Mahesha999你拯救了我的生命 – embarus 2012-10-16 07:20:14

+0

@embarus不要忘记回复,如果你对CassiniDevServer和CassiniDev包中的服务器类的区别有所了解,请确认。 – Mahesha999 2012-10-17 16:02:07

+0

确定。目前我还没有看到两个类别之间的差异。 :) – embarus 2012-10-20 12:02:34

0

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

这是以毫秒为单位的服务器在关闭之前闲置的时间量。我没有看到你在设置这个,所以,很可能服务器本身已关闭。

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

+0

如何设置CassiniDev的超时时间? – Mahesha999 2012-04-26 00:26:05

+1

@ Mahesha999:http://cassinidev.codeplex.com/discussions/290617 – NotMe 2012-04-26 02:30:35