Ejemplo n.º 1
0
    public Task HandleCallAsync(HttpContext httpContext)
    {
        var serverCallContext = new JsonTranscodingServerCallContext(httpContext, MethodInvoker.Options, MethodInvoker.Method, DescriptorInfo, Logger);

        httpContext.Features.Set <IServerCallContextFeature>(serverCallContext);

        try
        {
            serverCallContext.Initialize();

            var handleCallTask = HandleCallAsyncCore(httpContext, serverCallContext);

            if (handleCallTask.IsCompletedSuccessfully)
            {
                return(Task.CompletedTask);
            }
            else
            {
                return(AwaitHandleCall(serverCallContext, MethodInvoker.Method, IsStreaming, SerializerOptions, handleCallTask));
            }
        }
        catch (Exception ex)
        {
            return(serverCallContext.ProcessHandlerErrorAsync(ex, MethodInvoker.Method.Name, IsStreaming, SerializerOptions));
        }
Ejemplo n.º 2
0
 static async Task AwaitHandleCall(JsonTranscodingServerCallContext serverCallContext, Method <TRequest, TResponse> method, bool isStreaming, JsonSerializerOptions serializerOptions, Task handleCall)
 {
     try
     {
         await handleCall;
     }
     catch (Exception ex)
     {
         await serverCallContext.ProcessHandlerErrorAsync(ex, method.Name, isStreaming, serializerOptions);
     }
 }