Отражение ошибок служб grpc выдает только в режиме выпускаC#

Место общения программистов C#
Ответить
Anonymous
 Отражение ошибок служб grpc выдает только в режиме выпуска

Сообщение Anonymous »

В моем Program.cs:
ScanAndMapGrpcServices(app);

static void ScanAndMapGrpcServices(WebApplication app)
{
var currentAssembly = Assembly.GetExecutingAssembly();
var allTypes = currentAssembly.GetTypes().Concat(
currentAssembly
.GetReferencedAssemblies()
.SelectMany(assemblyName => Assembly.Load(assemblyName).GetTypes()))
.Where(type => type.Namespace == ""
&& !type.IsInterface
&& !type.IsAbstract);

Console.WriteLine(allTypes.Count());

foreach (var type in allTypes)
{
var method = typeof(GrpcEndpointRouteBuilderExtensions).GetMethod("MapGrpcService")?.MakeGenericMethod([type]);

object? invokedBuilder = method?.Invoke(app, [app]);

if (invokedBuilder is GrpcServiceEndpointConventionBuilder builder)
{
_ = builder.RequireCors();
}
}
}

При работе в режиме Release я получил эту ошибку
System.ArgumentException: 'GenericArguments[0], 'BlazorSchool.BLServer.Services.ReadTutorialService+d__2', on 'Microsoft.AspNetCore.Builder.GrpcServiceEndpointConventionBuilder MapGrpcService[TService](Microsoft.AspNetCore.Routing.IEndpointRouteBuilder)' violates the constraint of type 'TService'.'
Но в режиме отладки все в порядке.
На первый взгляд мне показалось, что мои сборки обрезаны, но потом я печатаю Console.WriteLine(allTypes.Count());, и режим отладки, и режим выпуска возвращают 22.
Код службы, выдающей ошибку:
public class ReadTutorialService(MyContext myContext, IConfiguration configuration) : ReadTutorialPageData.ReadTutorialPageDataBase
{
public override async Task RequestTreeData(TreeDataRequest request, ServerCallContext context)
{
}
}


Подробнее здесь: https://stackoverflow.com/questions/786 ... lease-mode
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»