2012-04-25 49 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