无法在web api控制器中遇到断点

时间:2017-01-21 15:05:25

标签: c# visual-studio-2015 asp.net-web-api2 asp.net-core-mvc

当我尝试调试此代码时:

 // POST: api/Events
    [HttpPost]
    public async Task<IActionResult> PostEvent([FromBody] object savedEvent)
    {

        Event addedEvent = JsonConvert.DeserializeObject<Event>(savedEvent.ToString());

        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

无法击中这一行:

   Event addedEvent = JsonConvert.DeserializeObject<Event>(savedEvent.ToString());

Debuger反应就像我点击继续但代码过去没有执行。我真的很困惑。谢谢你的帮助。

5 个答案:

答案 0 :(得分:6)

你可以尝试一些事情

1)确保您在调试模式下运行(而不是在发布中)

Like this

2)确保您正在运行加载了所有符号的最新代码(将鼠标悬停在断点上可以为您提供有关禁用其原因的额外信息)

答案 1 :(得分:3)

尝试删除操作的异步部分。这不是一个永久的解决方案,但它可以帮助您调试。我建议的另一件事是在你的行动中尝试捕捉代码。您的反序列化可能会失败并抛出一个异常,无论出于何种原因,调试器都没有捕获。

"use strict";

angular.module("gestione")
    .config(["$stateProvider", "$urlRouterProvider", "$ionicConfigProvider", "$httpProvider", "$ionicNativeTransitionsProvider",
        function ($stateProvider, $urlRouterProvider, $ionicConfigProvider, $httpProvider, $ionicNativeTransitionsProvider) {



            // if none of the above states are matched, use this as the fallback
            $urlRouterProvider.otherwise("/tab/login");



            $stateProvider
                // setup an abstract state for the tabs directive
                .state("tab", {
                    url: "/tab",
                    abstract: true,
                    templateUrl: "templates/tabs.html"
                })

                // Each tab has its own nav history stack:
                .state("tab.lastscan", {
                    url: "/lastscan",
                    cache: false,
                    nativeTransitions: {
                        "type": "filp",
                        "direction": "up"
                    },
                    views: {
                        'tab-left': {
                            templateUrl: "templates/tab-lastscan.html",
                            controller: "LastScanCtrl",
                            controllerAs: "lastscan"
                        }
                    }
                })
                .state("tab.menu", {
                    url: "/menu",
                    views: {
                        'tab-right': {
                            templateUrl: "templates/tab-menu.html",
                            controller: "MenuCtrl"
                        }
                    }


          })
            .state("tab.settings", {
                url: "/settings",
                cache: false,
                views: {
                    'tab-off': {
                        templateUrl: "templates/settings.html",
                        controller: "SettingCtrl",
                        controllerAs: "settingCtrl"
                    }
                }
            })
          ;




    }]);

答案 2 :(得分:2)

您可能正在以“发布”模式运行应用程序而不是“调试”。

您无法在“发布模式”中设置断点(大多数情况下)。

  

符号(.pdb)文件中有什么内容?符号文件的确切内容   因语言和编译器而异   设置,但在很高的水平,他们是如何设置的记录   编译器将您的源代码转换为处理器的机器代码   执行。

来源:https://blogs.msdn.microsoft.com/devops/2015/01/05/understanding-symbol-files-and-visual-studios-symbol-settings/

答案 3 :(得分:0)

我发现有时清洁和重建有助于破解断点。如果这没有帮助,重启Visual Studio也会有所帮助(特别是在2015年,至少根据我的经验)。

除此之外,我还遇到了内存泄漏的问题,导致我的应用程序只是输入到我的代码的某些部分,尽管这通常伴随着应用程序崩溃。

你没有提到任何错误或崩溃,只是代码没有执行,所以我不确定内存泄漏是否会导致你的问题。

答案 4 :(得分:0)

尝试怎么样:

System.Diagnostics.Debugger.Launch(); 

启动并将调试程序附加到进程。 至少要确保你进入那里。