我有一个调用Web服务方法的控制台应用程序。
在Web服务方法中,我使用System.Console.WriteLine
,但它被忽略了。
如何从我的Web服务方法中向控制台应用程序提供反馈?
答案 0 :(得分:11)
您不能因为System.Console.WriteLine
将写入服务器控制台,而您希望在客户端控制台上输出。
您可以使用SixPack library或Log4Net中的日志记录框架将日志记录消息写入文件。
为了能够在客户端控制台上编写,您需要将Console.WriteLine
语句放在客户端应用程序中。
答案 1 :(得分:1)
另一种方法是让Web服务“告诉”控制台应用程序正在做什么;保持正在运行的日志。
答案 2 :(得分:0)
托管您的Web服务的位置? 我认为Web服务在IIS上,因此它是一个单独的过程。它可以安装在同一台机器上或不同的机器上,但无论如何它都是不同的进程,它无法写入客户端应用程序的控制台。它可以写入日志文件,例如,使用system.diagnostics.trace或Log4Net开源日志记录工具
我建议您从这篇文章开始:ASP.NET Quickstart Tutorials: Monitoring Your Application了解您需要记录和监控ASPX Web服务的选择
答案 3 :(得分:0)
尝试这样做有点不寻常。如果要记录服务器的活动,那么我将使用Trace.WriteLine()
写入日志文件。
但是,如果要在客户端上查看服务器日志信息,则可以让服务器在Web服务器上记录到字符串变量,然后使用GetLog()
Web方法将日志信息检索到客户端。然后,您可以在控制台窗口中将其写出。这需要您经常调用GetLog()
网络方法,但您将获得所需的结果。这可能会有很多问题,例如在一次通话中请求大量的日志信息。
答案 4 :(得分:0)
您还可以考虑使用System.Diagnostics
中的EventLog支持来创建Web服务已完成的日志。
当我们在开发服务器上测试我们的Web服务时,我们经常使用Visual Studio远程调试器连接远程运行的Web服务代码,并使用Debug.WriteLine
调用来跟踪发生的情况。不是推荐用于实时服务器的东西,但对于通常需要更多细节的开发和测试来说,它是一种有价值的技术。
答案 5 :(得分:0)
您可以使用Asyn Callback来调用webservice。这样客户端就可以发起反馈请求。我不相信我们可以实现相反的目标。
您可以在How to: Implement an Asynchronous Web Service Client Using the Callback Technique
上找到有关Asyn回调的更多信息答案 6 :(得分:0)
最好的选择可能是让Web方法返回一个字符串,其中包含您要打印到控制台的任何值。然后,Console.WriteLine需要从控制台应用程序端进行。请记住,您也可以从Web方法返回Objects / Classes / Xml,因此您不限于单个字符串。
只有在您可以访问运行Web Service的Web Server时,另一个选项才能正常工作。但是,您可以通过让Web Service将日志写入服务器上的文本文件来实现它。相应的IUSR_CompName需要对计算机上的文件夹进行写访问。