【问题标题】:Unable to debug web service project in Visual Studio 2008无法在 Visual Studio 2008 中调试 Web 服务项目
【发布时间】:2010-10-27 10:40:26
【问题描述】:

我被分配了一个使用 VStudio.net 2003 用 VB 编写的 Web 应用程序。我正在尝试在我的本地主机 (VStudio 2008) 上配置源代码,以便我可以探索和了解当前的应用程序(在我开始任何真正的应用程序之前)更改)并且我无法为 Web 服务项目进行调试。

症状 1:

 "Unable to automatically step into the server. The remote procedure could not be debugged. 
  This usually indicates that debugging has not been enabled on the server.
  See help for more information". 

当我尝试 F11 (stepInto) 调用我的实际 Web 方法的代理类时会发生这种情况。

症状 2:在我的 .asmx 文件代码中对将被调用的语句预先设置断点不起作用(即调试器根本不会停止)。

描述完情况,下面是我的 VStudio 解决方案的配置方式:

Service1 - 从 VB - WEB - ASP.NET Web 服务应用程序模板创建的项目;此 Service1 项目包含我要调试的主要 .asmx 源代码。此项目的 Web.config 包含编译 defaultLanguage="vb" debug="true"

ProxyService1 - 从 Windows 创建的单独项目 - [VB] 类库模板;这里 form1.vb 文件被删除;我访问了“添加服务引用”-> 发现(解决方案中的服务),然后在“兼容性”部分中单击“添加 Web 引用”。然后选择上面的Service1,我给它分配一个WSservice1的“web引用名”。这会生成一个 Reference.VB 文件,当我在项目 bin\Debug 文件夹中构建 ProxyService1 类时,会生成一个同名的 .DLL;这个项目有一个带有编译 defaultLanguage="vb" debug="true"

的 App.Config 文件

Project1 - 带有调用 Web 服务的 .aspx 和 .vb 文件的主 UI 项目; project1 引用了 ProxyService1.DLL;此项目的 Web.config 包含编译 defaultLanguage="vb" debug="true"。我在这个项目中的一个名为 message.vb 的文件中遇到了一个断点,它看起来大致如下:

Public Class Message
Dim wsZipeee As New ProxyService1.WSservice1.myService
Dim dsMessage As DataSet
Public Function GetMessageByType(ByVal iMsgType As Integer) As DataSet
    dsMessage = wsZipeee.GetMessageByType(iMsgType)

如果我在上面的 stmt 上右键/转到定义,这是我的 ProxyService1 项目中 Reference.vb 中的代码:

    <System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/ZipeeeWebService/Zipeee/Get Message By Type", RequestElementName:="Get Message By Type", RequestNamespace:="http://tempuri.org/ZipeeeWebService/Zipeee", ResponseElementName:="Get Message By TypeResponse", ResponseNamespace:="http://tempuri.org/ZipeeeWebService/Zipeee", Use:=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle:=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)>  _
    Public Function GetMessageByType(ByVal iMsgType As Integer) As <System.Xml.Serialization.XmlElementAttribute("Get Message By TypeResult")> System.Data.DataSet
        Dim results() As Object = Me.Invoke("GetMessageByType", New Object() {iMsgType})
        Return CType(results(0),System.Data.DataSet)
    End Function

为了完整起见,这里是Service1项目的.asmx文件中对应的webmethod:

<WebMethod(MessageName:="Get Message By Type")> _
 Public Function GetMessageByType(ByVal iMsgType As Integer) As DataSet
    con = New SqlConnection(sConnZipeee)
    con.Open()

在 IIS 中我知道要检查的每个地方,在项目属性中,我已经检查了要检查或设置的正确调试设置。我已经调试过像这样设置的其他东西,但我真的坚持我错过了这个“解决方案”。

【问题讨论】:

    标签: vb.net visual-studio web-services debugging


    【解决方案1】:

    有关信息 - 如果您在这里寻找如何从 VS2008/.NET3.5 应用程序调试 .NET4 Web 服务,您需要在 VS2010 中启动服务,在服务中设置断点,然后运行您的应用程序从VS2008正常。断点将被击中。

    如果不在VS2010中运行服务,就会得到上面John描述的错误。

    【讨论】:

      【解决方案2】:

      当我调试 Web 服务时,我通常会在我的项目属性 (more info here) 的 Web 部分中选择“不要打开页面。等待来自外部应用程序的请求”选项。我也通常在 2 个 VS 实例中运行该项目,一个用于 Web 服务,一个用于客户端。我可以在 web 服务中设置断点,然后一切都会发生,我可以看到正在发生的事情。

      【讨论】:

      • 好的,我注意到 Web 服务属性中的单选按钮(以前从未见过)并选择了它。不完全确定你如何做你的方法:(1)在其中启动我的 3 个项目的 VS,然后在调用 webservice 之前 F5 在 UI 项目中的断点处停止(2)在 .asmx 代码中使用相同的 3 个项目和断点启动 VS (这种方法无法以与上述相同的方式停止)。或者,我有一个 VS 实例,然后在 UI 项目上右键单击,然后为每个需要调试的项目启动新实例。如果这就是你的意思,那对我也不起作用。
      • 我运行 2 个 VS 实例...每个都在运行调试,但一个从 web 服务项目开始,一个从客户端项目开始。
      • 你可以让你的 VS 实例调试 web 服务,就像我描述的那样,然后让客户端代码连接到它....如果在调试中也没关系,除非你正在调试客户也是。
      【解决方案3】:

      尝试在运行的 aspnet_wp.exe 进程上附加调试器

      【讨论】:

      • 不确定你的意思。我单击“调试”,然后单击“附加到进程”。我得到一个看起来很复杂的对话框,我不知道要做出什么选择。从可用进程中,我是否选择: aspnet_wp.exe devenv.exe vsjitdebugger.exe 在选择其中之一(或其他??)之后,如何进行断点?
      • 在visual studio上打开你的web服务项目,然后点击debug->attach to process,在显示的对话框中,选择aspnet_wp.exe然后点击attach按钮。当你请求网络服务时,如果你有断点,它们将被执行
      • 对不起,仍然不清楚(与我在这里看到的不匹配..)。我有3个项目;不清楚如何开始。除非我启动我的 .aspx Web 应用程序,否则没有名为 aspnet_wp.exe 的进程。然而,当我启动它然后转到调试/“附加到进程”时,该条目是灰色的(禁用),“附加”按钮也是如此。然而,我无法让调试器在我的 web 服务项目的 .asmx 文件中的断点 stmt 处停止。
      【解决方案4】:

      我通常将要调试的逻辑放在类库中,我可以从控制台应用程序开始进行调试。如果您必须作为服务进行调试,This link 也会很有用。

      【讨论】:

      • 注意:以上链接用于调试 Windows 服务而非 Web 服务。
      猜你喜欢
      • 2011-05-15
      • 2011-01-17
      • 2017-03-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多