Ответы пользователя по тегу .NET
  • Как логгировать в EntityFramework штатными средствами net core?

    byte916
    @byte916 Автор вопроса
    Если кратко, то логгер, судя по всему, синглтон, а БД по умолчанию не синглтон, и из-за этого возникает описанная проблема.
    В общем, вот решение задачи.
    Вместо контекста бд пробрасываем ServiceProvider
    Startup.cs

    loggerFactory.AddProvider(new DbLoggerProvider(app.ApplicationServices));


    В логгере создаем scope и получаем из сервиспровайдера экземпляр БД
    DbLogger.cs

    using (var scope = _serviceProvider.CreateScope())
    {
       var db = scope.ServiceProvider.GetRequiredService<CuDb>();
    
       db.Logs.Add(new CheckUpDb.Log() { Date = DateTime.UtcNow, LogLevel = logLevel, Message = formatter(state, exception) });
       db.SaveChanges();
    }

    Ответ написан
    Комментировать
  • Как правильно хранить секреты C# на линуксе?

    byte916
    @byte916 Автор вопроса
    В общем, оказалось это просто
    В файле сервиса просто прописать
    Environment=KEY=VALUE
    При этом, вложенные поля отделяются двойным подчёркиванием
    К примеру, ConnectionString превращается из
    {
      "ConnectionStrings": {
        "DefaultConnection": "SomeString"
      }
    }

    в
    Environment=ConnectionStrings__DefaultConnection='SomeString'


    Либо, использовать файл с переменными EnvironmentFile
    Ответ написан
    2 комментария
  • Какие библиотеки есть для работы с PDF в .Net Core?

    byte916
    @byte916 Автор вопроса
    Попробовал следующие варианты

    PDFSharp – не совместим с .Net Core
    Aspose.PDF – платная
    Nreco PdfGenerator — лицензионные ограничения
    DinkToPdf – библиотека трехлетней давности, не поддерживается
    Select.HtmlToPdf — хороший вариант, но работает только под виндой и не работает под линуксом
    IronPDF - платная
    EvoPDF - платная
    EO.Pdf - платная
    Spire.Pdf - есть бесплатная версия, но не совместима с core
    OpenHtmlToPdf - старая, не совместима с core
    ExpertPdfHtmlToPdf - платная

    Продолжаю поиски
    Ответ написан
    4 комментария
  • Какой тип лучше подходит для хранения времени?

    byte916
    @byte916
    TimeSpan идеально подходит для хранения конкретного времени. Он хранит не промежуток а конкретное время.
    А вообще, если вам нужно хранить именно пары времени (начало и конец), и конец может быть на следующий день (например с 9 утра до часа ночи) или вам нужно работать с таймзонами, то вам, скорее всего, понадобится собственный тип. В нём можно хранить пары времени, проверять к какому дню относится нужное время (например, если вам нужно выяснить к какой смене относится время 0:30) итд.
    Ответ написан
  • Почему ASP NET Identity возвращает 401 вместо переадресации на LoginPath?

    byte916
    @byte916 Автор вопроса
    Я нашёл решение. Я просто добавил библиотеку Microsoft.Owin.Host.SystemWeb в проект, и всё заработало. Странно, что ни в одном солюшене и инструкции "как начать использовать identity" не было ни слова про эту библиотеку.
    Ответ написан
    Комментировать
  • Как связать две иерархии классов?

    byte916
    @byte916
    Почему бы в родительский класс SpaceObject не добавить абстрактный метод Initialize, который переопределить в каждом дочернем классе, и тогда ваш код сократится до
    void InitializeSpaceObject(SpaceObject spaceObject)
        {
    spaceObject.Initialize();
        }

    А еще, говорят, лучше передавать в параметрах интерфейсы, то есть должно быть так
    void InitializeSpaceObject(ISpaceObject spaceObject)
        {
    spaceObject.Initialize();
        }
    Ответ написан
    Комментировать