从Web表单应用程序进入Web服务应用程序

时间:2014-02-12 17:13:10

标签: c# asp.net wcf web-services visual-studio-2012

我正在尝试调试我在C#中使用VS2012创建的Web服务。 我以Web表单应用程序的形式创建了一个测试应用程序,该应用程序调用Web服务中的方法。它们都在我的本地计算机上。

我需要能够进入Web服务应用程序进行调试,并查看其他人尝试执行相同操作的所有信息。但我似乎无法让它进入服务方法。

这些应用程序位于不同的解决方案工作区中。我已尝试将两个应用程序设置为启动应用程序,但只有一个应用程序出现在多个解决方我已经尝试将Web服务进程附加到Web应用程序,但这也不起作用。

有谁可以描述我如何进入从Web表单应用程序调用的Web服务?

5 个答案:

答案 0 :(得分:4)

对于任何试图弄清楚如何调试Web服务的人。您需要执行以下操作:

  1. 启动调用Web服务的Web应用程序。在调用Web服务方法之前,在某处放置一个断点。
  2. 当您点击断点时,请转到Web服务项目并转到 调试 - >附加到流程
  3. 在此“附加到进程”对话框中,滚动“可用进程”并查找: w3wp.exe的
  4. 单击“附加”按钮将Web服务附加到Web应用程序进程。
  5. 当您通过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中使用该服务来完成调试过程。

以下是示例 enter image description here

将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 /同一解决方案一次调试两个应用程序