ブラウザ経由で表示できるテキスト ファイルをホストしようとしています。このサーバーは、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 を実行していることにも注意する必要があります。