如何调试已部署的.NET 4.5框架网站(非Web应用程序)?

19 浏览
0 Comments

如何调试已部署的.NET 4.5框架网站(非Web应用程序)?

我在为一个.NET框架4.5的代码库构建功能,但是我在调试时遇到了问题。

背景:

在此之前,我一直在构建JavaScript/Node.js项目,并且通过在代码中包含console.log(JSON.stringify(some_object))来查看变量中的数据非常容易。

这很方便,因为它可以通过浏览器开发工具实时显示我的变量数据。

但是在这个.NET网站(非Web应用程序)项目上,我在调试方面遇到了麻烦。它使用了Web Forms方法,所以我有一堆.aspx和.aspx.cs文件。我之前工作的代码库与我现在工作的代码库之间的一个重大区别是,之前我必须预先编译我的JS/Node.js项目,而这个网站项目会在每次请求时动态编译每个页面。这是一个有趣的“构建”过程,但结果是我没有找到太多关于调试过程的见解。

我可以访问开发和线上环境。

问题:

我如何在Visual Studio中访问我的变量?当我访问相应的.aspx页面时,我的代码后台文件中的函数总是触发。我想查看我的SQL/API调用接收和保存到变量中的内容。

我已经尝试在开发工具中显示我的数据,但由于进入怪异模式,我被阻止这样做,因此我宁愿不在浏览器的控制台中显示我的变量内容。

0
0 Comments

如何调试已部署的.NET 4.5框架网站(而不是Web应用程序)?

在Visual Studio中谈论调试时,您想知道有哪些选项可用吗?这是一种顶级的开发工具?

好比走进一个大型园艺用品商店,然后想知道他们是否有割草机和草坪护理产品!

首先,这里有比冰淇淋口味更多的选择,但我倾向于将输出发送到即时窗口。这样当我构建Windows应用程序、控制台应用程序、Web应用程序或其他应用程序时,我会将我的debug.print语句发送到即时窗口。(我倾向于这样做,因为我会在桌面软件开发、控制台开发甚至为MS Office构建COM .NET对象之间切换)。

首先是这个:

工具->选项->调试

然后是这个:

[![enter image description here](https://i.stack.imgur.com/9pbWY.png)](https://i.stack.imgur.com/9pbWY.png)

另一个原因是,当您按下F5运行/启动代码时,即时窗口会打开。

至于必须使用debug.print?嗯,通常情况下是不必要的。

我假设您正在使用“副本”,并且已经在VS上设置了在开发机上运行此项目。

假设我在页面中有一些简单的标记,一个简单的表格。




    
        
        
        
        
        
            
                
            
        
    

按钮的代码如下:

protected void cmdLoadData_Click(object sender, EventArgs e)
{
    Debug.Print("Load grid data");
    LoadData();          
}
void LoadData()
{
    string sCon = ConfigurationManager.ConnectionStrings["TEST4"].ConnectionString;
    Debug.Print(sCon);
    using (SqlConnection conn = new SqlConnection(sCon))
    {
        string strSQL = @"SELECT * FROM tblHotelsA ORDER BY HotelName";
        using (SqlCommand cmd = new SqlCommand(strSQL, conn))
        {
            conn.Open();
            DataTable rstData = new DataTable();
            rstData.Load(cmd.ExecuteReader());
            GridView1.DataSource = rstData;
            GridView1.DataBind();
        }
    }
}

然而,假设我还没有为SQL返回的行数放入debug.print。

实际上,不需要debug.print,我只需要在按钮点击事件的第一行设置一个断点,然后逐步执行代码。

所以,假设我有这段代码,但我还在左侧点击了一下-你会看到红色的断点。

所以,这段代码:

但是,在编辑器中,我设置了一个断点,所以它看起来像这样:

[![enter image description here](https://i.stack.imgur.com/bZpPv.png)](https://i.stack.imgur.com/bZpPv.png)

所以,当我按下F5运行/调试时,我的代码将运行到上面的断点,

我想看看数据列,还想知道/查看查询返回的行数。我甚至不需要任何debug.print

所以,我逐步执行。您只需将光标悬停在任何对象上-Visual Studio将像“魔术”一样展开该对象,就像剥洋葱一样!

所以,我逐步执行(F8),它看起来像这样:

[![enter image description here](https://i.stack.imgur.com/ogYsf.gif)](https://i.stack.imgur.com/ogYsf.gif)

所以,在上面的例子中,我查看/检查了列,然后快速查看了行属性,并获得了行数。

所以调试窗口(现在是即时窗口)看起来像这样:

[![enter image description here](https://i.stack.imgur.com/K1l3d.png)](https://i.stack.imgur.com/K1l3d.png)

还有很多其他可以打开的窗口。

所以,说即时窗口-(debug.print所在的地方)。

所以,这个:

[![enter image description here](https://i.stack.imgur.com/8yn9k.png)](https://i.stack.imgur.com/8yn9k.png)

现在,我只是触及了表面。

但是,作为一个一般的想法,如果您在Web表单上有一个按钮,您运行到该页面,并在后台代码中设置一个断点。此时,您可以像我上面那样逐步执行(F8)。

但是,不需要大量的debug.print,我只需将光标悬停在对象上(在此示例中为数据表),然后就可以查看列,然后切换到行对象以获取行数。

当然,在浏览器端,我会得到这个:

[![enter image description here](https://i.stack.imgur.com/vrwjd.png)](https://i.stack.imgur.com/vrwjd.png)

0