Как вернуть объекты из обработчиков делегатов UseRouting (...) ядра 3.0 в asp.net? - PullRequest
0 голосов
/ 21 мая 2019

С этой новой техникой маршрутизации aspcore 3 app.UseRouting(...) вы можете указать свои собственные делегаты запроса, а не отображать все на действия контроллера.

Однако эти делегаты запроса имеют только возврат Task и отсутствие Task<T>.Кажется, вы теряете возможность просто возвращать бизнес-объект, который с действием контроллера автоматически сериализуется в ответ с IActionResult.

Если у меня есть делегат маршрута, такой как:

options.MapGet("/getuser", async (httpContext) =>
{
    var user = new User
    {
        UserName = httpContext.User.Claims.First(c => c.Type == ClaimTypes.Name).Value
    };
});

Как я могу вернуть user в ответе в виде сериализованного JSON или, возможно, в виде потока / канала, с которым клиент может затем работать?

1 Ответ

0 голосов
/ 21 мая 2019

Как подсказал @Sami Kuhmonen, я закончил писать в поток ответов, используя System.Text.Json.Serialization.JsonSerializer

var user = new User
{
    UserName = httpContext.User.Claims.First(c => c.Type == ClaimTypes.Name).Value
};

await JsonSerializer.WriteAsync(user, httpContext.Response.Body);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...