我正在尝试调试我在C#中使用VS2012创建的Web服务。 我以Web表单应用程序的形式创建了一个测试应用程序,该应用程序调用Web服务中的方法。它们都在我的本地计算机上。
我需要能够进入Web服务应用程序进行调试,并查看其他人尝试执行相同操作的所有信息。但我似乎无法让它进入服务方法。
这些应用程序位于不同的解决方案工作区中。我已尝试将两个应用程序设置为启动应用程序,但只有一个应用程序出现在多个解决方我已经尝试将Web服务进程附加到Web应用程序,但这也不起作用。
有谁可以描述我如何进入从Web表单应用程序调用的Web服务?
答案 0 :(得分:4)
对于任何试图弄清楚如何调试Web服务的人。您需要执行以下操作:
当您通过Web应用程序进行操作时,您应该能够进入Web服务方法。
答案 1 :(得分:2)
假设您的Web服务已部署并正在运行,并且您很难打破Web服务代码:
首先,确保在调试配置(项目属性)中部署Web服务 - 这意味着在编译时生成调试符号。
其次,确保它实际上是“监听”,即没有IP /端口冲突或其他问题。
第三,确保启用了及时调试(请参阅我的评论)。
在您的网络服务代码中添加此行,您希望停止Web服务:
System.Diagnostics.Debugger.Break();
或者您可以通过代码附加它,然后只使用断点:
System.Diagnostics.Debugger.Launch();
现在,忘记其他假设。另一种方法 - 并且您的问题没有说明为什么这不起作用 - 只是通过在其Visual Studio解决方案中点击Debug来运行/托管您的Web服务,其中Web服务(它的.asmx文件)是启动项目。如果可行的话,你几乎可以将VS调试器连接到正在运行的进程,并且可以设置断点。
在这两种情况下,您都需要了解服务正在侦听的IP地址和端口组合,并在测试仪中使用该地址。
答案 2 :(得分:1)
您只需使用CTRL + ALT + P
将该服务附加到流程,然后找到运行服务的端口。然后第二件事就是使用WebRequest
在webform中使用该服务来完成调试过程。
以下是示例
将WCF投入项目的代码
#region Calling LOGIN Serv
string URL = "http://localhost:32319/ServiceEmployeeLogin.svc/login";
WebRequest wrGETURL;
wrGETURL = WebRequest.Create(URL + "/" + emp_username + "/" + emp_password + "/" + emp_type);
wrGETURL.Method = "POST";
wrGETURL.ContentType = @"application/json; charset=utf-8";
HttpWebResponse webresponse = wrGETURL.GetResponse() as HttpWebResponse;
#endregion
答案 3 :(得分:0)
您是否通过Visual Studio运行解决方案,如果是这样,您需要在每个解决方案中设置断点并从VS.Net启动应用程序。 VS将自动负责附加流程并打入您的代码
答案 4 :(得分:0)
打开2个Visual Studio实例,在一个加载中作为Web服务的解决方案在第二个加载正在使用此Web服务的解决方案。设置断点并在调试模式下运行第一个VS /解决方案,本地asp.net开发服务器应该以示例http://localhost:5152/
在第二个VS / Solution中,使用来自第一个(本地asp.net开发服务器)的URL包含必要的路径,例如http://localhost:5152/yourwebservicepath/webservicename
可能在调试之前将其放在web.config中
运行第二个VS /解决方案,一旦这个项目首先调用webservice,VS应该在任务栏中开始闪烁,表示断点被击中,切换到第一个VS并从那里逐步执行。
请注意,如果您将调试太长时间,第二个VS /应用程序将遇到服务器的超时,因为它是由断点保持的
<强>更新强> 其他方式:
如果Web服务项目和使用应用程序都在同一个解决方案中: 将Web服务项目设置为启动项目并开始调试 在解决方案资源管理器中右键单击使用的应用程序,选择Debug - &gt;开始新实例。现在,您可以从一个VS /同一解决方案一次调试两个应用程序