示例#1
0
        public async Task ForwardToAsync(ServiceType serviceType, string path, bool allowAnonymous = false)
        {
            HttpContext context = _httpContextAccessor.HttpContext;

            string userId = _requestContextAccessor.Context.UserId;

            if (!allowAnonymous && userId == null)
            {
                context.Response.StatusCode = StatusCodes.Status401Unauthorized;
                return;
            }

            if (userId != null)
            {
                context.GetRouteData().Values.Add(nameof(userId), userId);
            }

            path = FillRouteValues(path, context.GetRouteData().Values);
            HttpRequestMessage fwRequest = BuildRequest(context.Request, path);

            HttpResponseMessage response;

            using (IServiceHttpClient client = await _httpClientFactory.CreateAsync(serviceType, userId, CancellationToken.None))
            {
                response = await client.SendAsync(fwRequest, CancellationToken.None);
            }

            await WriteResponseAsync(response, context.Response);
        }
示例#2
0
 public HomeController(IServiceHttpClient httpClient)
 {
     _httpClient = httpClient;
 }
 public InterestsService(HttpClient httpClient, IServiceHttpClient serviceClient, ILogger <InterestsService> logger)
 {
     _httpClient    = httpClient;
     _serviceClient = serviceClient;
     _logger        = logger;
 }