Ответ на метод GET: ошибка 404 «Cannot GET» - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь узнать angular У меня проблема с CORS.

Проксиконфиг создания файла. json

{
    "/api/*" : {
    "target": "http://localhost:9000",
    "secure": false,
    "logLevel": "debug"
    }
}

9000 - это номер моего внутреннего прокси. Далее этот файл используется в пакете. json

"name": "white-space-map-web-ui",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve --proxy-config proxyconfig.json",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },

Из c является частью этого файла.

У меня есть сервис, который получает клиентов от сервиса.

Это мой простой сервис.

import { HttpClient } from '@angular/common/http';
import { Client } from 'src/models/client';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';


@Injectable()
export class ClientService {

    private url : string = '/api/Client';

    constructor(private http : HttpClient){}

    getClients() : Observable<Client[]> {
       return this.http.get<Client[]>('/api/Client');
      }
}

Далее я внедряю в AppModule этот сервис и использую этот метод.

getClients(){
  this.client.getClients().subscribe(clients =>{
    console.log(clients);
  });

и HTML

<button (click)="getClients()">getClients</button>

Все в порядке, но сначала я был проблема с protecion CORS «Access-Controll-Allow-Origin», но теперь у меня есть проблема, потому что, когда я пытаюсь нажать метод GET, я подключаюсь к прокси-серверу 4200, а не к 9000, то есть прокси моего интерфейса, а не бэкэнда

enter image description here

Это мой бэкэнд:

 public class Program
    {
       private static void Main(string[] args)
        {
            var rc = HostFactory.Run(x =>
            {
                x.Service<OwinBootstrap>(s =>
                {
                    s.ConstructUsing(name => new OwinBootstrap());
                    s.WhenStarted(owinBootstrap => owinBootstrap.Start());
                    s.WhenStopped(owinBootstrap => owinBootstrap.Stop());
                });
                x.RunAsLocalSystem();

                x.SetDescription("White space WebApi ");
                x.SetDisplayName("WhiteSpaceWebApi");
                x.SetServiceName("WhiteSpaceWebApi");
            });

            var exitCode = (int)Convert.ChangeType(rc, rc.GetTypeCode());
            Environment.ExitCode = exitCode;
        }
    }


internal class OwinBootstrap
    {
        private readonly IAppSettings _appSettings = new AppSettings();
        private IDisposable _webApi;

        public void Start()
        {
            var baseAdress = _appSettings.WebApiUri;
            _webApi = WebApp.Start<Startup>(baseAdress);
        }

        public void Stop()
        {
            _webApi.Dispose();
        }


    }

 public class Startup
    {
        public void Configuration(IAppBuilder appBuilder)
        {
            // Configure Web API for self-host. 
            var config = new HttpConfiguration();
            config.Routes.MapHttpRoute(
                "DefaultApi",
                "api/{controller}/{id}",
                new { id = RouteParameter.Optional }
            );

            appBuilder
                .UseNinjectMiddleware(new NinjectBootstrap().GetKernel)
                .UseNinjectWebApi(config);
        }
    }


internal interface IAppSettings
{
    string WebApiUri { get; }
}

internal class AppSettings : IAppSettings
{
    public string WebApiUri => ConfigurationManager.AppSettings["WebApiUri"];
}

 <appSettings>
    <add key="WebApiUri" value="http://localhost:9000/" />
  </appSettings>

1 Ответ

1 голос
/ 02 мая 2020

Хорошо, поэтому проблемы могут быть 3:

  1. Вы запустили npm запуск после изменений конфигурации ?
  2. Попробуйте изменить ваш прокси-конфиг. json к этому ...

    {"/ api": {"target": "http://localhost: 9000 ", "secure": false, "logLevel ":" debug "}}

  3. ваш / api / Client может не работать, попробуйте сделать запрос с почтальоном

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...