我使用这个指南创建了一个带有Angular的ASP.NET Core应用程序。
它能正常工作,但是当我尝试向API中添加一个新的控制器时,它不允许我路由到该控制器操作。
这里是我的repo:https://github.com/rarDevelopment/rardk-web-dotnet/tree/main/rardk.web 关键信息:
以下是场景,以说明问题(尝试通过Postman,但Angular应用程序也在app.component.ts中调用这些端点):
https://localhost:4200/weatherforecast -> 这可以工作
https://localhost:7042/weatherforecast -> 这可以工作
https://localhost:4200/api/now/letterboxd -> 这无法工作
https://localhost:7042/api/now/letterboxd -> 这可以工作
问题是:如果更改proxy.conf.js对新的端口没有影响(因为我还尝试将新路由添加到其中),那么是什么让WeatherForecast控制器在4200端口上工作,而其他东西则不工作?
编辑:添加代码片段以说明问题:
现在的控制器:
天气预报控制器(可用):
这里是我的repo:https://github.com/rarDevelopment/rardk-web-dotnet/tree/main/rardk.web 关键信息:
localhost:4200
是Angular应用程序
localhost:7042
是API
它们应该使用proxy.conf.js代理,但是即使我完全注释该文件,它仍然适用于WeatherForecastController。以下是场景,以说明问题(尝试通过Postman,但Angular应用程序也在app.component.ts中调用这些端点):
https://localhost:4200/weatherforecast -> 这可以工作
https://localhost:7042/weatherforecast -> 这可以工作
https://localhost:4200/api/now/letterboxd -> 这无法工作
https://localhost:7042/api/now/letterboxd -> 这可以工作
问题是:如果更改proxy.conf.js对新的端口没有影响(因为我还尝试将新路由添加到其中),那么是什么让WeatherForecast控制器在4200端口上工作,而其他东西则不工作?
编辑:添加代码片段以说明问题:
现在的控制器:
using Microsoft.AspNetCore.Mvc;
using rardk.web.BusinessLayer;
namespace rardk.web.API.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class NowController : ControllerBase
{
private readonly ILetterboxdBusinessLayer _letterboxdBusinessLayer;
public NowController(ILetterboxdBusinessLayer letterboxdBusinessLayer)
{
_letterboxdBusinessLayer = letterboxdBusinessLayer;
}
[HttpGet("letterboxd", Name = "letterboxd")]
public ActionResult GetLetterboxdFeed()
{
_letterboxdBusinessLayer.GetLetterboxdFeed();
return Ok();
}
}
}
天气预报控制器(可用):
using Microsoft.AspNetCore.Mvc;
namespace rardk.web.API.Controllers
{
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
}
}
proxy.conf.js(似乎没有任何作用):
const PROXY_CONFIG = [
{
context: [
"/test"
],
target: "https://localhost:7042",
secure: false
}
]
module.exports = PROXY_CONFIG;
const PROXY_CONFIG = [ { context: [ "/api" ], target: "https://localhost:7042", secure: false, headers: { Connection: 'Keep-Alive' } } ] module.exports = PROXY_CONFIG;
我尝试访问 https://localhost:4000/api/now/letterboxd,它不起作用,但我尝试访问 https://localhost:7042/api/now/letterboxd,它可以。 - muttley91