我试图托管一个可以通过浏览器查看的文本文件。该服务器将在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
答案 0 :(得分:2)
您需要在HTTP标头中添加“Content-Length”参数。