【问题标题】:How to debug a WebMethod in ASP.NET如何在 ASP.NET 中调试 WebMethod
【发布时间】:2013-09-27 05:24:30
【问题描述】:

我的 fileName.asmx.cs 文件中有以下 WebMethod

[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetData(string value)
    {
        //-----
        //Respective code querying the database
        //-----
    }

这是使用 jQuery

的相应 ajax 调用
getData: function (type) {        
        var response = "";
        $.ajax({
            type: "POST",
            dataType: 'json',
            url: "../GetData",
            data: '{value:' + type.toString() + '}',
            async: false,
            contentType: "application/json; charset=utf-8",
            success: function (msg) {
                console.log('succes', msg)
                response = msg;
            }
        });
        return response.d;
    }

我在我的WebMethod 中添加断点以进行调试,但它并没有进入它。 我正在尝试在我的 localhost:2133 中执行此操作,参考一些 SO Answers 我也尝试附加以下过程,但没有成功。

没有调试我无法解决错误,因为我已经浪费了几个小时我在这里发布。

谁能指导我(几张截图会更有帮助)如何在 ASP.NET 中调试 WebMethod?

更新 1: 我还尝试将 Console.WriteLine() 放入 WebMethod。但是VS2012的输出界面什么都没有。

更新 2: 我在构建文件时遇到错误,但该站点在我的本地主机中。这个错误是否给我调试 WebMethod 带来了麻烦?或者说清楚

只有干净的代码(没有错误)才能调试?

【问题讨论】:

  • 你的ajax调用是否到达服务器,你可以在firebug net选项卡中查看,是否有成功的ajax调用。
  • @Bibhu 因为我已经处理了WebMethod 中的异常。我从服务器(即我的本地主机)收到错误响应。我也尝试了同样的成功WebMethod,但没有成功:(
  • 你遇到了什么错误
  • @Bibhu 我自己在做 (try..return successJson..catch.."\error\") 这也不适用于成功的通话。
  • @christiandev 这不是问题,因为 asmx 文件中的其他方法正在获取结果。实际上我需要知道如何调试WebMethod。无论如何感谢您的指点

标签: asp.net c#-4.0 visual-studio-2012 visual-studio-debugging


【解决方案1】:

我通过将数据插入数据库中的调试日志来在 ASP.NET 中进行所有网站调试。这个方法非常简单,不管你的服务器是如何从客户端调用的,它总是有效的(因为页面加载、对 Web 服务的调用以及来自页面的回调都会导致不同的服务器功能和返回状态)。

此外,使用 Chrome 开发者工具 Network Tab 对调试 Web 方法非常有用。

  1. 打开要发出网络请求的页面
  2. 打开 Chrome 的开发者工具,进入网络标签
  3. 触发网络请求。现在,您将看到在网络选项卡的结果中添加了一行,其中包含 Web 方法的名称及其 URL。单击该名称,您将看到 5 个选项卡:标题、预览、响应、Cookie 和时间。如果您的 Web 方法引发错误,并且您的站点设置为在 aspx 页面上显示堆栈跟踪,那么“响应”页面实际上会显示已创建的呈现错误页面。

【讨论】:

    【解决方案2】:

    经过长时间的挣扎(一整天),我找到了导致我出现问题的原因。我无法调试的原因是因为2个错误。

    我没有考虑修复,因为这仅仅是一个许可错误。 现在我了解到只有干净(无错误代码)的 Web 服务才能被调试。

    而对于通过 IIS 进行调试,我使用 w3wp.exe 进程附加到它。

    这对我帮助很大http://forums.iis.net/t/1154992.aspx

    【讨论】:

      猜你喜欢
      • 2013-10-07
      • 1970-01-01
      • 2011-08-04
      • 1970-01-01
      • 2013-10-05
      • 1970-01-01
      • 1970-01-01
      • 2014-05-27
      • 1970-01-01
      相关资源
      最近更新 更多