Blazor клиентская отладка

Я заметил, что все мои точки останова на C# не срабатывают, поскольку отладка кажется отключенной для клиентских приложений Blazor.

Есть ли способ присоединить отладчик или как-то включить его?

Спасибо

13 ответов

Обновление: для тех, кто использует предварительную версию.NET Core 3.2 3 и выше, см. Этот ответ

Для тех, кто любит картинки, вот пошаговое руководство с использованием предварительной версии Visual Studio 16.4 (предварительная версия.NET Core 3.1 2) и Chrome версии 78.

Запустите приложение, используя профиль отладки. Например

После загрузки сайта, когда курсор находится на вкладке Chrome, нажмите "Shift+Alt+D".

Chrome откроет новую вкладку с надписью "Невозможно найти вкладку браузера с отладкой". Найдите первый экземпляр сообщения "Press Win+R". Скопируйте полную строку ниже, которая начинается с "chrome - remote-debugging-port..."

Нажмите "Win+R", вставьте только что скопированный текст и нажмите Enter. Откроется новое окно Chrome.

Во второй раз нажмите "Shift+Alt+D", и теперь вы должны увидеть что-то более многообещающее..

Отсюда установите несколько точек останова, например

Вернитесь на вкладку с запущенным приложением Blazor, активируйте точку останова. Отсюда вы можете нажать F10 для одного шага и F8 для возобновления. Осмотрите местных жителей через окно "Область действия", как показано.

Да, есть способ отладить код С # на стороне клиента:

1. Пользовательский IE "Microsoft Edge", "Не использовать Google Chrome".

2. Используйте собственное приложение "Не используйте IIS Express".

3. нажмите F5 и наслаждайтесь

В последней версии функции предварительного просмотра Blazor добавлена ​​возможность отладки кода на стороне клиента с помощью Visual Studio. Следуйте инструкциям по приведенной ниже ссылке о том, как обновить решение и использовать отладчик.

https://devblogs.microsoft.com/aspnet/blazor-webassembly-3-2-0-preview-3-release-now-available/

В Visual Studio нет возможности отладки для клиентской части Blazor. Единственный вариант сейчас - использовать отладчик Chrome.

Все это объясняется в официальной документации, https://docs.microsoft.com/en-gb/aspnet/core/blazor/debug?view=aspnetcore-3.0

В настоящее время это известная проблема в проектах Blazor. Отладчик запускается медленнее / быстрее сборки проекта и не успевает "увидеть" сборку. Вот мое исправление, пока они не решат это. Я добавляю задержку в Program.cs, чтобы при запуске проекта в режиме отладки он давал отладчику время для правильного подключения. Я использовал 5000 мс, но вам, возможно, придется увеличить это значение, если ваша машина медленнее моей.

public class Program
{
    private static async Task DebugDelayAsync()
    {
#if DEBUG
        await Task.Delay(5000);
#endif
    }

    public static async Task Main(string[] args)
    {
        await DebugDelayAsync();

        (...)
    }
}

Я только что столкнулся с этой проблемой из-за использования Brave в качестве браузера. Как только я сказал Visual Studio использовать Chrome или Edge, клиентские точки останова внезапно начали работать.

Он доступен только в Google Chrome и Microsoft Edge. Также в Visual Studio 2022 необходимо включить отладку сценариев. Затем вы сможете отлаживать, и точка останова будет достигнута.

Хорошая новость заключается в том, что теперь (август 2020 г.) вы можете использовать Visual Studio 2019 V16.6 или выше для отладки кода Blazor на стороне клиента! Для этого обновите файл launchSettings.json в стартовом проекте, включив в каждый профиль запуска следующее свойство inspectUri:

"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}"

Источник: https://docs.microsoft.com/en-us/aspnet/core/blazor/debug?view=aspnetcore-3.1&tabs=visual-studio

Это старый пост, но у меня был тот же симптом с другим исправлением, и я не смог найти отличный ответ, опубликованный в другом месте.

Если вы используете Visual Studio в Windows для отладки и установилиHTTP_PROXY/HTTPS_PROXYпеременные среды, оказывается, что для отладки VS необходимо использовать прокси. Кажется, это означает, что вам также нужно установитьNO_PROXYenv var, чтобы позволить отладчику подключиться к локальному хосту...

NO_PROXY=localhost,127.0.0.1

После этого отладка на стороне клиента в моем приложении Blazor WASM заработала.

Есть 5 различных вещей, которые необходимо правильно настроить, чтобы это работало, по крайней мере, в Visual Studio 2022.

  1. Убедитесь, что вы находитесь в режиме отладки при запуске проекта.

  2. Выберите Chrome или Edge в качествеWeb Browser, как показано ниже.

  3. УстановитьScript Debuggingпункт меню вEnabled, как показано ниже.

  4. Убедитесь, чтоLaunch browserвариант верный. Это можно сделать либо через<Project Name> Propertiesменю (как показано выше) или черезProperties\launchSettings.jsonфайл напрямую. Вы не можете отлаживать свой код через уже запущенный браузер.

  5. В файле введите это:

    "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}"

    Это пример минимальногоlaunchSettings.jsonфайл:

            {
        "profiles": {
           "http": {
              "commandName": "Project",
              "launchBrowser": true,
              "environmentVariables": {
                "ASPNETCORE_ENVIRONMENT": "Development"
              },
              "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
              "applicationUrl": "http://localhost:5127"
           }
        ...   
    

Моя проблема была устранена путем включения «Включить пошаговое выполнение исходного кода .NET Framework». Это автоматически отключает «Включить только мой код», см. диалоговое окно «Параметры VS».

Это проблема версии Visual Studio. Обновите свой VS, и ваша проблема будет решена. удачи

Эта проблема решена в .NET 7 Framework. Вы можете просто добавить отладчик, и точка останова будет достигнута.

Другие вопросы по тегам