出于某种奇怪的原因,我无法调试静态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项目中的任何其他位置插入断点不是问题,但在该代码块中,它是。
答案 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,它会弹出消息框,要求在命中时附加调试器