使用Web服务器在WindowsCE上托管文本文件

时间:2013-06-11 16:37:14

标签: c# webserver windows-ce

我试图托管一个可以通过浏览器查看的文本文件。该服务器将在WindowsCE计算机上运行。

目前,当我尝试使用Internet Explorer 9在我的Windows 7机器上查看文件时,它可以正常工作。 一旦我在WindowsCE上安装它,Internet Explorer就坐在那里等待工作循环旋转。

如果我在端口80上运行telnet到网络服务器,我可以看到我的文本文件被返回:

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

1 个答案:

答案 0 :(得分:2)

您需要在HTTP标头中添加“Content-Length”参数。