我使用this guide创建了一个ASP.NET核心应用程序,它可以按原样工作,但是当我尝试向API添加一个新的控制器时,它不允许我路由到那个控制器操作。
我这里有回购协议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;
2条答案
按热度按时间8hhllhi21#
您必须理解proxy.conf.js文件。
特别是
context
键,从你提到的例子中,你已经将https://localhost:4200/test
代理到https://localhost:7042/test
,就这样。bxjv4tth2#
我认为您缺少API的代理,您设置的配置没有代理API端点
这是我使用的
通过代理,API端点也应该能够访问此
https://本地主机:4200/应用程序接口/现在/信箱d