【发布时间】:2022-07-27 00:39:39
【问题描述】:
尝试将角色授权添加到最小 api,但我不明白为什么这个简单的测试不起作用。我可以确认该角色有效。
在我的 Program.cs 中
我有app.ConfigureApi();
在 Api.cs 中
public static class Api
{
public static void ConfigureApi(this WebApplication app)
{
// This works
app.MapGet("/Hello/", [Authorize(Roles = Roles.Manager)] () =>
{
return Results.Ok("hello test");
});
//this works
app.MapGet("/HolaNoAutho/", GetHola);
//This does not work. Errors out.
app.MapGet("/HelloAutho/", [Authorize(Roles = Roles.Manager)]() => GetHola);
}
private static async Task<IResult> GetHola()
{
try
{
return Results.Ok("Hola Test");
}
catch (Exception ex)
{
return Results.Problem(ex.Message);
}
}
}
知道如何使用最少的 api 进行此工作角色授权吗?
错误是“
System.NotSupportedException:'System.Func1[[System.Threading.Tasks.Task1[[Microsoft.AspNetCore.Http.IResult, Microsoft.AspNetCore.Http.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]] 的序列化和反序列化, System.Private.CoreLib、Version=6.0.0.0、Culture=neutral、PublicKeyToken=7cec85d7bea7798e]]' 实例不受支持。不受支持的成员类型位于类型“System.Func1[System.Threading.Tasks.Task1[Microsoft.AspNetCore.Http.IResult]]”上。路径:$。”
【问题讨论】:
-
只需将您的属性移动到 GetHola 方法即可。
-
我不理解坚持在最小的 api 之上构建成熟的应用程序。它最初是为快速 poc 应用程序设计的,最近我看到了很多关于最小 api 在将其用于实际应用程序时引起的所有困惑和问题的问题。
标签: c# .net-6.0 minimal-apis