我刚刚编写完c#console应用程序,我正在考虑将Web服务器嵌入其中(可能是这个http://webserver.codeplex.com)。虽然我在高级网络编码方面做的不多,所以我不确定我是否可以做我需要做的事。
基本上,我想让用户只需访问我的应用程序所服务的站点,即可实时查看我的应用程序的控制台输出。如果我理解正确,要做这样的事情就需要AJAX,这是一个简单的C#Web服务器无法处理的。
这是正确的还是有一种简单的方法可以解决这个问题?
答案 0 :(得分:1)
如何重新路由控制台输出
您需要自己编写TextWriter
并Console
通过Console.SetOut
使用它。此作者应通知已连接的Web客户端以及原始Console.Out
。
如何托管类似COMET的服务器
您可以使用HttpListener
和一些基本的异步编程来执行此操作。如果您将HttpListenerContext.Response.OutputStream
包裹在StreamWriter
(AutoFlush
设置为true
)并将HttpListenerContext.Response.SendChunked
设置为true
,则客户将收到部分结果 - 这意味着您甚至可以在IFRAME中执行此操作。
如果启用了UAC,则需要为自己添加URL权限:
netsh http add urlacl url=http://+:9090/ user=domain\username
<强>代码吗
我无法抗拒;我写了一篇(测试不佳,大部分不完整)sample。
答案 1 :(得分:0)
这是不正确的。
AJAX是一种依赖JavaScript的客户端技术。只要Web服务器可以响应HTTP请求,它就可以服务 AJAX内容(无论这意味着什么: - )。
答案 2 :(得分:0)
我会使用这个UtilDev Cassini作为我选择的嵌入式Web服务器,它基于嵌入式Visual Studio开发服务器的代码,可以运行在IIS中运行的任何东西。 AJAX是一种浏览器技术而不是服务器技术,服务器只看到http请求与其他任何一样。我的最后一点是,在控制台应用程序中嵌入Web服务器似乎有些奇怪。使用Windows服务更常见。您是否考虑过将控制台应用程序转换为Windows服务?