0

我试图托管一个可以通过浏览器查看的文本文件。该服务器将在 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

4

1 回答 1

2

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

于 2013-06-11T17:11:06.437 回答