C# 使用web服务器在WindowsCE上托管文本文件
我正在尝试托管一个可以通过浏览器查看的文本文件。此服务器将在WindowsCE计算机上运行 目前,当我尝试使用internet explorer 9在windows 7计算机上查看该文件时,效果良好。 一旦我把它放在WindowsCE上,internet explorer就会坐在那里等待工作循环的旋转 如果我在Web服务器的端口80上运行telnet,我可以看到返回的文本文件:C# 使用web服务器在WindowsCE上托管文本文件,c#,webserver,windows-ce,C#,Webserver,Windows Ce,我正在尝试托管一个可以通过浏览器查看的文本文件。此服务器将在WindowsCE计算机上运行 目前,当我尝试使用internet explorer 9在windows 7计算机上查看该文件时,效果良好。 一旦我把它放在WindowsCE上,internet explorer就会坐在那里等待工作循环的旋转 如果我在Web服务器的端口80上运行telnet,我可以看到返回的文本文件: HTTP/1.1 200 OK Content-Type: text/plain MyTextFileContent
HTTP/1.1 200 OK
Content-Type: text/plain
MyTextFileContents
下面是完整的方法。未记录任何异常,并记录“已完成服务日志”
编辑:我还应该注意,我的WindowsCE正在运行.NET Compact Framework 2.0您需要在HTTP头中添加“内容长度”参数 你能试着在HTTP头中指定“内容长度”吗?答对了。那是约吉。你能把你的评论改成答案吗?这样我就可以把它标记为正确的。
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();
}