Я создал угловой проект, используя .NET core 2.2 и шаблон spa.
Я изменил startup.cs для использования прокси-сервера разработки при обслуживании angular, чтобы я мог запускать свой сервер и мой клиентский код независимо.
Я использую документацию .net core 2.2 и этот пост в блоге в качестве ссылки:
https://www.codingflow.net/building-single-page-applications-on-asp-net-core-2-2/
app.UseSpa(spa =>
{
// To learn more about options for serving an Angular SPA from ASP.NET Core,
// see https://go.microsoft.com/fwlink/?linkid=864501
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
//spa.UseAngularCliServer(npmScript: "start");
spa.UseProxyToSpaDevelopmentServer("http://localhost:4200");
}
});
Затем я выполнил следующие команды в двух терминалах
dotnet run
_
cd ./ClientApp\
npm start
Когда я перехожу в своем браузере (chrome) на localhost: 4200, веб-пакет будет обслуживать мое приложение.Однако, когда я перехожу на страницу выборки данных из шаблона, вызов API для
http://localhost:4200/api/SampleData/WeatherForecasts
сделан в компоненте выборки данных, являющейся частью стандартного шаблона
import { Component, Inject } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Component({
selector: 'app-fetch-data',
templateUrl: './fetch-data.component.html'
})
export class FetchDataComponent {
public forecasts: WeatherForecast[];
constructor(http: HttpClient, @Inject('BASE_URL') baseUrl: string) {
http.get<WeatherForecast[]>(baseUrl + 'api/SampleData/WeatherForecasts').subscribe(result => {
this.forecasts = result;
}, error => console.error(error));
}
}
interface WeatherForecast {
dateFormatted: string;
temperatureC: number;
temperatureF: number;
summary: string;
}
Возвращает 404
GET http://localhost:4200/api/SampleData/WeatherForecasts 404 (Not Found)
HttpErrorResponse {headers: HttpHeaders, status: 404, statusText: "Not Found", url: "http://localhost:4200/api/SampleData/WeatherForecasts", ok: false, …}
Конечно, эта ошибка не выдается, если я запускаю IIS Express в режиме отладки из Visual Studio.Это запустит окно браузера на другом порту (не 4200, обычно 44333), где все запросы API, кажется, нормально маршрутизируются.
Я бы хотел иметь возможность управлять своим клиентским кодом независимо от кода моего сервера.Как я могу это сделать?Что не так с моей текущей настройкой?