0

I am carrying out a project with apigateway and microservice Employees with visual studio 2019 with net.core 3.1

My configuration.json is:

 "ReRoutes": [
    {
      "DownstreamPathTemplate": "/api/employees/{everything}",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "provadb",
          "Port": 80
        }
      ],
      "UpstreamPathTemplate": "/api/employees/{everything}",
      "UpstreamHttpMethod": [ "POST", "PUT", "GET" ]
    }

In controllers:

public class EmployeesController : ControllerBase
    {
        private readonly ProvaDBContext _context;

        public EmployeesController(ProvaDBContext context)
        {
            _context = context;
        }

        // GET: api/Employees
        [HttpGet]
        public async Task<ActionResult<IEnumerable<Employees>>> GetEmployees()
        {
            return await _context.Employees.ToListAsync();
        }

docker-compose.override.yml

version: '3.4'

services:
  shapesapigateway:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=http://+:80
    ports:
      - "7000:80"
    volumes:
      - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
      - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
  
  provadb:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=http://+:80
    ports:
       - "7004:80"
    volumes:
      - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
      - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro

networks:
    app-net:
        driver: bridge

but if write in browser:

localhost:7004/api/Employees

results is:

[
    {
        "id": 1,
        "firstName": "Pranaya",
        "lastName": "Rout",
        "gender": "Male",
        "salary": 60000
    },
    {
        "id": 2,
        "firstName": "Anurag",
        "lastName": "Mohanty",
        "gender": "Male",
        "salary": 45000
    },
    {
        "id": 3,
        "firstName": "Preety",
        "lastName": "Tiwari",
        "gender": "Female",
        "salary": 45000
    },
    {
        "id": 4,
        "firstName": "Sambit",
        "lastName": "Mohanty",
        "gender": "Male",
        "salary": 70000
    },
    {
        "id": 5,
        "firstName": "Shushanta",
        "lastName": "Jena",
        "gender": "Male",
        "salary": 45000
    },
    {
        "id": 6,
        "firstName": "Priyanka",
        "lastName": "Dewangan",
        "gender": "Female",
        "salary": 30000
    },
    {
        "id": 7,
        "firstName": "Sandeep",
        "lastName": "Kiran",
        "gender": "Male",
        "salary": 45000
    },
    {
        "id": 8,
        "firstName": "Shudhansshu",
        "lastName": "Nayak",
        "gender": "Male",
        "salary": 30000
    },
    {
        "id": 9,
        "firstName": "Hina",
        "lastName": "Sharma",
        "gender": "Female",
        "salary": 35000
    },
    {
        "id": 10,
        "firstName": "Preetiranjan",
        "lastName": "Sahoo",
        "gender": "Male",
        "salary": 80000
    },
    {
        "id": 12,
        "firstName": "PIO",
        "lastName": "NONO",
        "gender": "M",
        "salary": 1234
    }
]

but if I write in the browser:

localhost:7000/api/Employees

 *'/usr/share/dotnet/shared/Microsoft.NETCore.App/3.1.10/System.Runtime.Intrinsics.dll' è stato caricato. Caricamento dei simboli ignorato. Il modulo è ottimizzato e l'opzione del debugger 'Solo codice utente' è abilitata.
    Microsoft.AspNetCore.Hosting.Diagnostics: Information: Request starting HTTP/1.1 GET http://localhost:7000/api/Employees  
    info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
          Request starting HTTP/1.1 GET http://localhost:7000/api/Employees  
    dbug: Ocelot.Errors.Middleware.ExceptionHandlerMiddleware[0]
          requestId: 0HM5DM6ULMR8I:00000002, previousRequestId: no previous request id, message: ocelot pipeline started
    Ocelot.Errors.Middleware.ExceptionHandlerMiddleware: Debug: requestId: 0HM5DM6ULMR8I:00000002, previousRequestId: no previous request id, message: ocelot pipeline started
    dbug: Ocelot.DownstreamRouteFinder.Middleware.DownstreamRouteFinderMiddleware[0]
          requestId: 0HM5DM6ULMR8I:00000002, previousRequestId: no previous request id, message: Upstream url path is /api/Employees
    Ocelot.DownstreamRouteFinder.Middleware.DownstreamRouteFinderMiddleware: Debug: requestId: 0HM5DM6ULMR8I:00000002, previousRequestId: no previous request id, message: Upstream url path is /api/Employees
    warn: Ocelot.DownstreamRouteFinder.Middleware.DownstreamRouteFinderMiddleware[0]
          requestId: 0HM5DM6ULMR8I:00000002, previousRequestId: no previous request id, message: DownstreamRouteFinderMiddleware setting pipeline errors. IDownstreamRouteFinder returned Error Code: UnableToFindDownstreamRouteError Message: Failed to match Route configuration for upstream path: /api/Employees, verb: GET.
    Ocelot.DownstreamRouteFinder.Middleware.DownstreamRouteFinderMiddleware: Warning: requestId: 0HM5DM6ULMR8I:00000002, previousRequestId: no previous request id, message: DownstreamRouteFinderMiddleware setting pipeline errors. IDownstreamRouteFinder returned Error Code: UnableToFindDownstreamRouteError Message: Failed to match Route configuration for upstream path: /api/Employees, verb: GET.
    warn: Ocelot.Responder.Middleware.ResponderMiddleware[0]
    Ocelot.Responder.Middleware.ResponderMiddleware: Warning: requestId: 0HM5DM6ULMR8I:00000002, previousRequestId: no previous request id, message: Error Code: UnableToFindDownstreamRouteError Message: Failed to match Route configuration for upstream path: /api/Employees, verb: GET. errors found in ResponderMiddleware. Setting error response for request path:/api/Employees, request method: GET
          requestId: 0HM5DM6ULMR8I:00000002, previousRequestId: no previous request id, message: Error Code: UnableToFindDownstreamRouteError Message: Failed to match Route configuration for upstream path: /api/Employees, verb: GET. errors found in ResponderMiddleware. Setting error response for request path:/api/Employees, request method: GET
    dbug: Ocelot.Errors.Middleware.ExceptionHandlerMiddleware[0]
          requestId: 0HM5DM6ULMR8I:00000002, previousRequestId: no previous request id, message: ocelot pipeline finished
    Ocelot.Errors.Middleware.ExceptionHandlerMiddleware: Debug: requestId: 0HM5DM6ULMR8I:00000002, previousRequestId: no previous request id, message: ocelot pipeline finished
    info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
          Request finished in 23.4902ms 404* 

I can't understand where I'm wrong!

stepner
  • 1
  • 1
  • 2

2 Answers2

1

Version 16.0.0 onwards you need to use "Routes" instead of "ReRoutes" in your configuration.json file.

0

Try this !

    "Routes": [
        {
          "DownstreamPathTemplate": "/{everything}",
          "DownstreamScheme": "http",
          "DownstreamHostAndPorts": [
            {
              "Host": "provadb",
              "Port": 7004
            },
            {
              "Host": "provadb",
              "Port": 7000
            }
          ],
          "UpstreamPathTemplate": "/{everything}",
          "UpstreamHttpMethod": [ "POST", "PUT", "GET" ]
        }
  • As it’s currently written, your answer is unclear. Please [edit] to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Community Oct 28 '22 at 00:23