2013-06-11 41 views
0

我試圖託管一個可以通過瀏覽器查看的文本文件。該服務器將在WindowsCE機器上運行。使用網絡服務器在WindowsCE上託管一個文本文件

目前,當我嘗試在我的Windows 7機器上使用Internet Explorer 9查看文件時,它工作正常。 一旦我將它託管在WindowsCE Internet Explorer上,就等着工作圈在旋轉。

如果我運行在端口80遠程登錄到Web服務器,我可以看到返回我的文本文件:

HTTP/1.1 200 OK 
Content-Type: text/plain 

MyTextFileContents 

下面是完整的方法。沒有例外記錄,並且記錄「完成的服務日誌」。

static void launchLogWebServer() 
    { 
     new Thread(delegate() 
     { 
      LogIt(0, "Starting Log Server"); 
      TcpListener server = new TcpListener(IPAddress.Any, 80); 
      server.Start(); 
      TcpClient newConn; 

      while (true) 
      { 
       try 
       { 
        newConn = server.AcceptTcpClient(); 

        LogIt(0, "Connection Made to Log Server"); 

        NetworkStream stream = newConn.GetStream(); 
        StreamReader sr = new StreamReader(stream); 
        StreamWriter sw = new StreamWriter(stream); 

        sw.WriteLine("HTTP/1.1 200 OK"); 
        sw.WriteLine("Content-Type: text/plain"); 

        sw.WriteLine(); 

        String line = null; 

        while ((line = sr.ReadLine()).Length != 0) 
        { 
        } 

        string text = string.Empty; 

        LogIt(0, "Reading Log File"); 

        try 
        {        
         using (StreamReader logReader = new StreamReader("mylog.log")) 
         { 
          text = logReader.ReadToEnd(); 
          logReader.Close(); 
         }        
        } 
        catch (Exception ex) 
        { 
         LogIt(0, ex.ToString()); 
         text = ex.ToString(); 
        } 

        LogIt(0, "Completed Reading Log File"); 

        sw.WriteLine(text); 
        sw.Flush(); 

        newConn.Close(); 
        LogIt(0, "Finished serving log"); 
       } 
       catch(Exception ex) 
       { 
        LogIt(0, ex.ToString()); 

       } 
      } 


     }).Start(); 

    } 

編輯:我還應該注意到我的WindowsCE運行.NET Compact Framework 2.0中

+3

你可以嘗試在HTTP頭中指定'Content-Length'嗎? – Yogee

+0

賓果。那是Yogee。你能否將你的評論改爲答案,以便我可以將其標記爲正確。 – CathalMF

回答

2

您需要在HTTP頭中添加 '內容長度' 參數。

相關問題