Mds.Libraries.CSharp.Server 8.5.0-beta.88057

Mds.Libraries.CSharp.Server

Общий пакет для работы серверов. Содержит в себе множество инструментов от работы с базой, до помощи в обработке запросов.


Обработчики ошибок (IBugReporter)

Пакет содержит в себе инструменты для удобной обработки ошибок на основе интерфейса IBugReporter из пакета Mds.Libraries.CSharp.Abstractions.

Основные классы:

  • SlackBugReporter - отправка отчетов об ошибках в слак.
  • ConsoleBugReporter - вывод отчета об ошибках в консоль.
  • CompositeBugReporter - отправка отчета об ошибках во все каналы.

При добавлении SlackBugReporter и ConsoleBugReporter используются флаги ReporterTypeFlags. Они отвечают за то, в каком виде тот или иной репортер будет зарегистрирован.

ReporterTypeFlags

  • None - Не регистрировать ни в каком виде.
  • Independent - Регистрировать в качестве самостоятельного обработчика ошибок.
  • Channel - Регистрировать в качестве канала для отправки отчетов об ошибках.

Composite

Для доставки отчета об ошибках в несколько каналов используется CompositeBugReporter.

Добавление через Autofac:

public void Add(ContainerBuilder builder)
{
    builder.AddCompositeReporter();
}

Или через IServiceCollection:

public void Add(IServiceCollection services)
{
    services.AddCompositeReporter();
}

Логика его работы подразумевает, что он запрашивает все реализации IExceptionReportChannel в scope и в каждый отправляет уведомление об ошибке.

IExceptionReportChannel

Для реализации функционала, когда каналов доставки отчетом об ошибках много, добавлен интерфейс IExceptionReportChannel. Он аналогичен IBugReporter. Добавлен он для разделения самостоятельных обработчиков и каналов для отправки уведомлений.

Для того, чтобы стандартные репортеры были зарегистрированы в качестве канала для доставки уведомлений, при регистрации необходимо указывать флаг ReporterTypeFlags.Channel.


Slack

Для регистрации обработчика ошибок с отправкой данных в Slack, нужно.

Через Autofac:

public void Add(ContainerBuilder builder)
{
    var hook = "";
    var appName = "";

    builder.AddSlackReporter(hook, appName);
}

Или через IServiceCollection:

public void Add(IServiceCollection services)
{
    var hook = "";
    var appName = "";

    services.AddSlackReporter(hook, appName);
}

Так же можно добавить репортер через SlackBugReporterConfiguration или через реализацию одного из интерфейсов: ISlackBugReporterConfiguration или IExtendedSlackBugReporterConfiguration.

SlackBugReporterConfiguration:

public void Add(ContainerBuilder builder)
{
    var hook = "";
    var appName = "";
    var configuration = new SlackBugReporterConfiguration(hook)
    {
        AppName = appName
    };

    builder.AddSlackReporter(configuration);
}

ISlackBugReporterConfiguration:

public void Add(ContainerBuilder builder)
{
    ISlackBugReporterConfiguration configuration = ...;

    builder.AddSlackReporter(configuration);
}

IExtendedSlackBugReporterConfiguration аналогичный интефейс, только с возможностью расширенной настройки доставки и форматирования сообщений. Таких как канал, имя бота и прочее.

Аналогично через IServiceCollection.

Так же при добавлении репортера есть возможность указать в качестве кого будет добавлен репортер. По умолчанию - Independent:

public void Add(ContainerBuilder builder)
{
    var hook = "";
    var appName = "";

    services.AddSlackReporter(hook, appName, ReporterTypeFlags.Independent | ReporterTypeFlags.Channel);
}

Аналогично через IServiceCollection.


Console

Для вывода в консоль информации об ошибках используется ConsoleBugReporter. Он сделан скорее для разработки, чем для реального применения.

Через Autofac:

public void Add(ContainerBuilder builder)
{
    services.AddConsoleReporter();
}

Аналогично через IServiceCollection.

Так же при добавлении репортера есть возможность указать в качестве кого будет добавлен репортер. По умолчанию - Independent:

public void Add(ContainerBuilder builder)
{
    services.AddConsoleReporter(ReporterTypeFlags.Independent | ReporterTypeFlags.Channel);
}

Аналогично через IServiceCollection.

Sentry

Если в системе подключен Sentry, то его можно подружить с IBugReporter. Для этого надо добавить SentryBugReporter.

Добавление через Autofac:

public void Add(ContainerBuilder builder)
{
    builder.AddSentryReporter();
}

Или через IServiceCollection:

public void Add(IServiceCollection services)
{
    services.AddSentryReporter();
}

Аналогично есть механизм с ReporterTypeFlags:

public void Add(ContainerBuilder builder)
{
    services.AddSentryReporter(ReporterTypeFlags.Independent | ReporterTypeFlags.Channel);
}

Подключение

Подключение репортера подразумевает, что в системе уже настроена интеграция с Sentry.

Обычно для этого надо сделать

Program.cs

public static void Main(string[] args)
{
    return WebHost.CreateDefaultBuilder(args)

                  // Подключение Sentry
                  .UseSentry() // или .UseSentry(option => {})

                  .UseStartup<Startup>();
                  .Build()
}

и

В Mds шаблонах это Configurations.cs, у вас может быть другой файл

public void Configure(IApplicationBuilder app)
{
    app.UseSentryTracing();

    app.UseRouting();
    app.UseEndpoints(endpoints => {});
}

После этого уже можно добавлять SentryBugReporter стандартным способом.

Showing the top 20 packages that depend on Mds.Libraries.CSharp.Server.

Packages Downloads
Mds.Cdn.Api.Client
Апи клиент для работы с Mds.Cdn.
2
Mds.Cdn.Sdk
Апи клиент для работы с Mds.Cdn.
1
Mds.Cdn.Sdk
Апи клиент для работы с Mds.Cdn.
2
Mds.Libraries.CSharp.ChangesBus
Пакет для интеграции шины для обновления сущностей.
1
Mds.Libraries.CSharp.ChangesBus
Пакет для интеграции шины для обновления сущностей.
2
Mds.Libraries.CSharp.MutexContainer
Пакет удобное работы для синхронизации работы над одной сущностью.
1

Version Downloads Last updated
9.0.1 3 02/28/2026
9.0.0 1 02/28/2026
9.0.0-beta.122950 1 02/28/2026
8.7.1 1 02/28/2026
8.7.0 1 02/28/2026
8.7.0-beta.110592 1 02/28/2026
8.7.0-beta.110590 1 02/28/2026
8.7.0-beta.110456 1 02/28/2026
8.7.0-beta.110431 1 02/28/2026
8.7.0-beta.110426 1 02/28/2026
8.7.0-beta.110424 1 02/28/2026
8.7.0-beta.110379 1 02/28/2026
8.7.0-beta.110373 1 02/28/2026
8.7.0-beta.110349 1 02/28/2026
8.7.0-beta.110214 1 02/28/2026
8.7.0-beta.110212 1 02/28/2026
8.7.0-beta.110209 1 02/28/2026
8.7.0-beta.110196 1 02/28/2026
8.7.0-beta.103522 1 02/28/2026
8.7.0-beta.103519 1 02/28/2026
8.7.0-beta.103510 1 02/28/2026
8.7.0-beta.103506 1 02/28/2026
8.7.0-beta.103502 1 02/28/2026
8.6.2 1 02/28/2026
8.6.0 1 02/28/2026
8.6.0-beta.105697 1 02/28/2026
8.6.0-beta.88070 1 02/28/2026
8.5.0 1 02/28/2026
8.5.0-beta.88057 1 02/28/2026
8.4.1 1 02/28/2026
8.4.1-beta.105685 1 02/28/2026
8.4.1-beta.86789 1 02/28/2026
8.4.0 1 02/28/2026
8.3.1 1 02/28/2026
8.3.0 1 02/28/2026
8.3.0-beta.65967 1 02/28/2026
8.3.0-beta.65962 1 02/28/2026
8.2.1 1 02/28/2026
8.2.0 1 02/28/2026
8.1.0 1 02/28/2026
8.0.5 1 02/28/2026
8.0.3 1 02/28/2026
8.0.3-beta.14759 1 02/28/2026
8.0.2 1 02/28/2026
8.0.1 1 02/28/2026
8.0.0 1 02/28/2026
7.0.1 1 02/28/2026
7.0.1-beta.6491 1 02/28/2026
7.0.1-beta.5494 1 02/28/2026
7.0.0-beta.2117 1 02/28/2026
6.6.0 1 02/28/2026
6.4.4 1 02/28/2026
6.4.0 1 02/28/2026
6.2.1 1 02/28/2026