0

ブラウザ経由で表示できるテキスト ファイルをホストしようとしています。このサーバーは、WindowsCE マシン上で実行されます。

現在、Internet Explorer 9 を使用して Windows 7 マシンでファイルを表示しようとすると、正常に動作します。WindowsCEインターネットエクスプローラーでホストすると、ワーキングサークルが回転するのを待っているだけです。

ポート 80 で Web サーバーに対して telnet を実行すると、テキスト ファイルが返されることがわかります。

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

MyTextFileContents

以下は完全な方法です。例外は記録されず、「Finished serving log」が記録されます。

    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 に答える