如何调试使用 C# 创建的 API 项目

问题描述 投票:0回答:2

我想调试我目前在本地的API项目。使用 C# 编写。

调试的原因低于该 API 项目为特定 JSON 返回 null 的函数。

 [Route("api/NMRController/Disposition")]
    [HttpPost]
    public NMR_Object Disposition(NMR nmr)
    {

        try
        {
            Console.WriteLine($"nmr: {JsonConvert.SerializeObject(nmr)}");
            string CorrectiveAction = nmr.CorrectiveAction;
            string DispositionResult = nmr.DispositionResult;
            string DispositionComment = nmr.DispositionComment;
            string NoteForGroup = nmr.NoteForGroup;
            string SerialNo = nmr.SerialNo;


            MySql.Data.MySqlClient.MySqlConnection conn;
            conn = new MySql.Data.MySqlClient.MySqlConnection();
            conn.ConnectionString = ConfigurationManager.ConnectionStrings["constr_nmr"].ConnectionString;

            MySql.Data.MySqlClient.MySqlCommand myCommand = conn.CreateCommand();
            myCommand.Connection = conn;
            if (conn.State.ToString() != "Open")
            {
                conn.Open();
            }

            myCommand.CommandText = "UPDATE NMR_SerialNo SET CorrectiveAction = @CorrectiveAction, DispositionResult = @DispositionResult, DispositionComment = @DispositionComment, NoteForGroup = @NoteForGroup WHERE SerialNo = @SerialNo";
            myCommand.Parameters.AddWithValue("@CorrectiveAction", CorrectiveAction);
            myCommand.Parameters.AddWithValue("@DispositionResult", DispositionResult);
            myCommand.Parameters.AddWithValue("@DispositionComment", DispositionComment);
            myCommand.Parameters.AddWithValue("@NoteForGroup", NoteForGroup);
            myCommand.Parameters.AddWithValue("@SerialNo", SerialNo);
            myCommand.ExecuteNonQuery();
            conn.Close();

            // write insert query


            var RM = new NMR_Object();
            RM.data = "";
            RM.success = true;
            // RM = JsonConvert.SerializeObject(dt));
            return RM;

        }
        catch (Exception ex)
        {

            var RME = new NMR_Object();
            RME.success = false;
            RME.message = "NMR POST: " + ex.Message;
        }
        return null;
    }

以下是我在电话后传递的 JSON。

{ "CorrectiveAction": "测试", "DispositionResult": "测试", "DispositionComment": "测试", "NoteForGroup": "测试", "序列号": "MYSQL" }

c# api rest asp.net-apicontroller
2个回答
0
投票

如果您从 visual studio 运行它,应该可以调试您的 API。您可以在您的方法中放置一个断点,该断点在发出请求时触发。您可以使用网络浏览器或邮递员提出请求。从那里你应该能够单步执行代码、检查变量等。

对于默认的 asp.Net 项目至少应该如此。如果您对项目的运行方式进行了自定义,您可能需要做其他事情来允许调试。

如果根本没有触发断点,则可能是您的路由有问题。创建一个默认项目只是为了验证您的测试设置是否有效可能很有用。


0
投票

在 Visual Studio for Mac 上,打开您的项目。

在左上角,您可以选择是使用 http 还是 https,然后您需要选择调试,以及您希望调试的浏览器。

然后点击运行

项目成功构建并启动并运行后,您可以通过单击要测试的代码行旁边的行名称在 visual studio 中放置断点。

Visual Studio 会在进入断点时中断,你可以观察你的变量

© www.soinside.com 2019 - 2024. All rights reserved.