Ответы пользователя по тегу ASP.NET
  • Как собрать общий конфиг для docker и asp net?

    @OwDafuq
    Т.к. настройки для подключения хранятся в секретах, то вариант с 2 конфига отпадает.
    Примем за условность, что, накатывая миграции руками, мы будем находиться в Development среде, а при запуске приложения в Docker'e - в любой другой, тогда можно сделать что-то такое:
    string connectionString;
    if (builder.Environment.IsDevelopment())
    {
        connectionString = builder.Configuration.GetConnectionString("LocalContext")!;
    }
    else
    {
        connectionString = builder.Configuration.GetConnectionString("DockerContext")!;
    }
    
    builder.Services.AddDbContext<DockerContext>(options => options.UseSqlServer(connectionString));
    Ответ написан
    Комментировать
  • Fron to Back, Real Time Chat. Как?

    @OwDafuq
    А в чем сложности? Берете ASP.NET Core, переписываете свой код в него и всё. Да, между .net framework и .net core версиями SignalR будут различия, поэтому 1в1 код перенести у вас не выйдет в любом случае
    Ответ написан
    Комментировать
  • Как делается Авторизация и аутентификация на Blazor Server?

    @OwDafuq
    1. Сохранить, очевидно, например в LocalStorage/Cookie. Получить информацию: взять середину токена (там 3 части, разделенных запятой, а вам нужна как раз 2-ая из них), сделать на этой строке base64 decode и json deserialize, например, и будет вся информация в виде Claim'ов

    2. Данные о пользователе в смысле логин/пароль и пр.? Очевидно, что в базе, а как - на ваше усмотрение, мы используем стандартные возможности EF, просто немного дописанные руками (в т.ч. фио и пр.)

    3. Да, мы так тоже делаем, смотреть в сторону IMeddleware
    Ответ написан
    6 комментариев
  • Как правильно обновить JWT токен перед HTTP запросом?

    @OwDafuq
    Имхо, но обновлять JWT перед каждым запросом - не хорошо. У токенов есть время жизни, если оно подходит к концу или уже кончилось - обновляйте.
    У себя я решил это через interceptor для HttpClient'a, который проверяет токен на время жизни и сам его автоматически обновляет, вам нужно думать в эту сторону тоже. Руками это делать как-то не комильфо.

    Так делать не стоит:
    return await new HttpClient().GetFromJsonAsync

    Зачем вам асинхронный метод, когда вы целенаправленно пишите код так:
    var r = client.ExecuteAsync(request).Result.Content;


    Каким образом получение токена у вас может завершиться после получения списка пользователей - тоже загадка.

    Почему-то названия для ЗАПРОСА называется как AuthenticatedResponse, а не AuthenticatedRequest (например).

    Все работает
    - ок, а вопрос тогда в чем?
    Ответ написан
    4 комментария
  • Почему не проходит Authorize?

    @OwDafuq
    Токены отправляются с клиента в заголовке в формате "Bearer eyJhbGc......"

    Неправильно передаете токен в заголовке, так генерирует Swagger:
    65003f7bbe115283639973.png
    Ответ написан
    2 комментария
  • Как реализовать RPC на Masstransit?

    @OwDafuq
    MassTransit для запросов (через IRequestClient) создает себе временную очередь и привязывает её к такому-же обменнику для внутренних нужд, можете обратить внимание, что очередь exp, скорее всего, со временем в 60000 мсек (1 минута). В общем - это нормальное поведение для него, он таким образом определяет одного Producer'a от другого для запросов. Для публикации (publish) создание 2-х очередей тоже норма (например: Producer -> MyEntity (Exchange) -> MyEntityQueue (Exchange) -> MyEntityQueue (Queue) -> Consumer). С чем это конкретно связано - не помню, но в репозитории MassTransit говорили, что это абсолютно нормальное поведение (тоже задавался этим вопросом).

    UPD: Вопрос решен через Телеграм, ошибка была в том, что человек создал 2 разных запроса с одинаковой структурой, consumer не мог обрабатывать запрос т.к. не совпадал namespace.
    Ответ написан
  • Как получить список с фильтрами?

    @OwDafuq
    1) Отдавать из репозитория IQueryable и в контроллере/другом слое приложения конструировать запрос исходя из того, что пришло с фронта, как вариант.
    2) Specification pattern

    2 варианта на выбор
    Ответ написан
    6 комментариев
  • Почему новый элемент списка каждый раз заменяет последний элемент списка?

    @OwDafuq
    Вы создаете List с маслами в контроллере каждый раз, когда к контроллеру обращаются.
    1 запрос = 1 экземпляр контроллера, соответственно получаете на каждый запрос - новый List. Вынесите в сервис/базу/синглтон объект/сделайте list - static/и т.д. свой список масел, чтобы он не создавался постоянно, а жил где-то отдельно от контроллера.

    p.s. - oil.Name = oil.Name - зачем?)
    Ответ написан
    2 комментария
  • Как вывести список сотрудников привязанных к животным?

    @OwDafuq
    1. У вас "несколько сотрудников которые привязаны к одному животному" не соответствует вашему же коду. У ваших животных только 1 сотрудник. У вас связь 1 ко многим. Для "несколько сотрудников которые привязаны к одному животному" нужно "многие-ко-многим".
    2. "Через модели, контролеры или представления?". Через всё. Контроллер отдает на View модель, которая рендерится во View.
    3. Решение:
    3.1 Сначала сделать связь многие-ко-многим:
    public class Animal
    {
    	[Key]
    	public int AnimalId { get; set; }
    
    	public string Name { get; set; }
    
    	public string Type { get; set; }
    
    	public Eat Eats { get; set; }
    
    	public virtual ICollection<Staff> { get; set; }
    }

    3.2. Использовать это в коде:
    //Метод контроллера, который вызывается при переходе на страницу. (example: localhost/Home/ShowStaff/2959)
    public async Task<IActionResult> ShowStaff(int animalId)
    {
    	var result = await context.Animals.Include(x => x.Staff).FirstOrDefault(x => x.AnimalId == animalId); //Получаем всех сотрудников для животного
    	return View(result); //отдаем результат во view
    }
    Ответ написан
  • Как создать поле для загрузки файла на сервер в C# WPF?

    @OwDafuq
    1. Положить кнопку на окно.
    2. Написать код выбора файла (ровно 2-3 строки кода).
    3. Написать код отправки файла на сервер.
    Ответ написан
    Комментировать
  • Как можно хранить list в database?

    @OwDafuq
    Логично, что создать ни 1 таблицу, а несколько.
    Какой вопрос - такой ответ.
    Посмотри
    Вообще, по правильному, надо предоставить полную модель со всеми ее св-вами и полями, кто вас знает, что вы подразумеваете под "несколько list"
    Ответ написан
  • Как соединить два видео (байтовые массивы) в один видео файл с#?

    @OwDafuq
    Я, не зная структуру видео файлов, могу с вероятностью в 99.8% сказать, что где-то в начале есть 2, либо 4, либо 8 байт длины видео. Которые вы, естественно, не меняете, поэтому получаете видео в изначальном виде.
    Ответ написан
    Комментировать
  • Как записать звук в браузере (в aac или ogg) и отправить на сервер?

    @OwDafuq
    Скорее всего работает склейка буфера в 1 общий буфер и вам выдается этот самый буфер. Попробуй разбить его на 2 буфера, 1 - голос, 2 - данные. Так работает TCP.
    Ответ написан
    Комментировать
  • Как реализовать авторизацию по токену в .net core?

    @OwDafuq
    Ну делаешь базу в которую заносишь токен, а при обращении к бэку - сверяешь токен в базе, если есть такой - даешь ответ, если нету - шлеш подальше
    Ответ написан
    Комментировать