Mds.Libraries.CSharp.Server 10.0.0-beta.198142

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.
7
Mds.Cdn.Sdk
Апи клиент для работы с Mds.Cdn.
4
Mds.Cdn.Sdk
Апи клиент для работы с Mds.Cdn.
7
Mds.Cdn.Sdk
Апи клиент для работы с Mds.Cdn.
9
Mds.Libraries.CSharp.ChangesBus
Пакет для интеграции шины для обновления сущностей.
5
Mds.Libraries.CSharp.ChangesBus
Пакет для интеграции шины для обновления сущностей.
6
Mds.Libraries.CSharp.Db.Mongo
Пакет для удобной работы с mongoDb.
1
Mds.Libraries.CSharp.Db.Mongo
Пакет для удобной работы с mongoDb.
2
Mds.Libraries.CSharp.MutexContainer
Пакет удобное работы для синхронизации работы над одной сущностью.
6

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