【问题标题】:debug web service proxy class in C#在 C# 中调试 Web 服务代理类
【发布时间】:2012-03-08 20:49:13
【问题描述】:

在我的项目中,我创建了一个具有 Web 服务的 Web 应用程序。在同一个解决方案中,我添加了另一个 Web 应用程序。我正在使用此应用程序中的 Web 服务。我已经使用使用 Web 参考选项添加 Web 参考添加了一个 Web 参考。我想调试生成的代理类(当我添加 Web 引用时)。我在代理类中放置了一个调试器,但它不起作用。然后我复制了代理类并在客户端 Web 应用程序中创建了一个具有相同内容的新类,并删除了 Web 引用。但我仍然无法调试代理类。如何调试代理类? 请帮忙。

【问题讨论】:

  • 如何托管 Web 服务?
  • 据我所知,Web 服务和利用其操作的类是通过实现接口来实现的。您是否尝试过为此目的实现接口。
  • 您是要调试代理本身还是要能够调试服务上的代码(步入其中)?
  • 什么“没有用”?错误?跳过断点?无论如何,您应该能够调试服务,所以请描述您尝试过的内容。您能否也发布一个重现该问题的小代码示例,以便其他人可以查看它?

标签: c# web-services


【解决方案1】:

你试过这个功能吗? System.Diagnostics.Debugger.Launch();

不要使用调试器,而是使用上述函数,这可能会解决您的问题。

比如你要调试一个函数test()

public bool test()
{
System.Diagnostics.Debugger.Launch();
//..put it on top of the function
}

【讨论】:

    【解决方案2】:

    在 Visual Studio 2010 中,您可以设置断点(显然您已经尝试过)。但是尝试通过右键单击您的应用程序选择调试并单击新启动新实例来运行 Web 服务解决方案。

    调试位于设置为启动项目选项的下方

    【讨论】:

    • 但还要注意正常运行和启动新实例之间存在差异。我经常遇到这个问题(都在运行但服务没有调试),这就是解决方案。
    • 另外,也许有人可能会提到,默认值正在动态生成端到端通信协议,该协议也可以在可执行文件的调试文件夹下找到。有时真的很有帮助......另外,如果你在同一个解决方案和 vs studio 中有两个项目,要导入服务,你也应该从 bin 文件夹启动二进制文件,这样你可以右键单击项目->添加服务引用并使用向导。
    【解决方案3】:

    我通常这样做的方式是在本地 IIS 中托管客户端应用程序和 Web 服务托管应用程序。您应该有两个应用程序虚拟目录。为每个应用程序使用单独的应用程序池。当从客户端应用程序向 Web 服务应用程序发出成功请求时,应该有两个工作进程(w3wp.exe 进程)。您应该能够将调试器附加到正确的 w3wp 进程以对其进行调试。

    【讨论】:

      【解决方案4】:

      尝试从生成的代码中删除[DebuggerStepThroughAttribute()]

      【讨论】:

        【解决方案5】:

        在您进行网络服务调用之前设置断点,然后Step Into (F11) 网络服务调用本身。进入网络服务后,您可以在任意位置设置更多断点。

        【讨论】:

          【解决方案6】:

          Visual Studio 2008\2010:

          1. 在您的 Web 服务应用程序中设置 <compilation debug="true">

          2. 转到 Tools\Options,然后 Debugging\General 并取消选中 Enable Just My Code (Managed Only)

          3. 在代理类中设置断点(对于 Web 服务,在 Invoke 上设置一个断点,在返回行上设置另一个断点)

            像往常一样调试。

            如果您看到 step-into request 导致自动跳过属性或运算符,只需按照说明操作(右键单击该行,取消选中“Step over properties and operator”或“Step变成具体的……”)。

          【讨论】:

            【解决方案7】:

            作为其他答案的补充,也可以右键解决方案,选择“Set StartUp Projects...”

            在 Common Properties/Startup Project 下,选择“多个启动项目:”的单选选项,然后为您的 Web 服务和代理项目选择 Action“Start”。

            现在,每次您点击运行时,调试都应该在两个项目中启动调试器。

            【讨论】:

              【解决方案8】:

              添加您的代码(在 c# 中):

              System.Diagnostics.Debugger.Launch();
              

              检查您是否将项目构建为“解决方案配置:调试”。

              【讨论】:

                猜你喜欢
                • 2013-03-16
                • 1970-01-01
                • 1970-01-01
                • 2011-02-18
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多