无法在C#/ ASP.NET中调试静态webmethod

时间:2012-01-05 15:35:26

标签: c# asp.net debugging webmethod

出于某种奇怪的原因,我无法调试静态Web方法中的代码。代码本身是这样的:

public partial class StoredProcedures : BasePage//Inherits from  System.Web.UI.Page
{
  ...........................
  [WebMethod(EnableSession = true)]
    public static object ProcedureList(int jtStartIndex, int jtPageSize, string jtSorting)
    {
        if (jtStartIndex == null)
            jtStartIndex = 0;
        if (jtPageSize == null)
            jtPageSize = 0;
        if (string.IsNullOrEmpty(jtSorting))
            jtSorting = null;
        //Get data from database
        string sql = "select object_name as Name, status as Status, created as Created from user_objects where object_type = 'PROCEDURE'";
        DataTable ds = RequestSingleton.DBConnection.GetDataTable(sql);
        int procCount = ds.Rows.Count;
        if (procCount != 0)
        {
            DataFiller<StoredProc> dtfStoredProc = new DataFiller<StoredProc>();
            List<StoredProc> list = null;
            list = dtfStoredProc.FromDataTableToList(ds);
      .........................
      .............................. 

JQuery调用静态方法,如果我在静态方法中插入断点,则不使用它们。这可能是我很遗憾的事情,但似乎有点奇怪,我无法调试web方法。问题是我想看看那里发生了什么,因为有些事情是不对的,没有调试,这有点难。 在ASP.NET项目中的任何其他位置插入断点不是问题,但在该代码块中,它是。

3 个答案:

答案 0 :(得分:4)

我找到了无法调试静态方法的原因:必须将web.config文件中trace的值设置为true,否则不会调用断点。 因此,对于在ASP.NET中调试静态webmethods时可能遇到此问题的任何人,请检查trace是否设置为true。 pageOutput是false还是true无关紧要,但trace必须设置为true。谢谢你的时间和答案。

答案 1 :(得分:0)

通过转到Web项目的属性,确保已启用ASP.NET调试程序。选择Web选项卡,在该页面的底部,您可以使用几个不同的选项来选择要启用的调试器。

同时确保您有多个项目已附加调试器,如果没有,您可以转到Tools-&gt;附加到Process并选择WebDev.WebServer40.exe进程并附加到它。

答案 2 :(得分:0)

在第一行使用Debugger.Break,它会弹出消息框,要求在命中时附加调试器