我创建了一个基于角度11的.net核心网站。
在我的解决方案中,我创建了一些控制器,并希望不是从角度组件或服务调用它,而是直接从浏览器或不同的服务调用它。在这种情况下,角捕获请求在其路由上查找相关组件,并显示“页面未找到”错误。
如何配置角、.net核心或IIS以允许对控制器的直接请求?谢谢。
我的财务主任:
[ApiController]
[Route("api/[controller]")]
public class PubSubController : ControllerBase
{
[HttpGet("Notify")]
public IActionResult Notify()
{
return Ok("OK");
}
}我调用的Url:http://angularApp/api/PubSub/Notify。
发布于 2022-01-11 13:01:58
它们显示URL (http://angularApp/api/PubSub/Notify)的方式,并假设您想绕过角路由,从API中命中“控制器”是不可能的。基于您的URL,您使用的是PathLocationStrategy,它利用了一个相对新的名为HTML5的HTML5 API (来自HTML5历史API)。所以所有的URL都会被棱角路由器服务解释。为了获得这个功能,我将角度转换为HashLocationStrategy,这样整个SPA站点将相对于一个基本URL,并且您可以使用其他URL从API中命中“控制器”。在Startup.cs In 配置方法中,您可以执行如下操作:
app.Use(async (context, next) =>
{
var url = context.Request.Path.Value;
if (url.Contains("/api/PubSub/Notify"))
{
// ...do your things
//....context.Response.Redirect(urlRedirect, permanent: false);
return; // short circuit
}
await next();
});若要避免将响应返回SPA默认URL,请执行以下操作。
https://stackoverflow.com/questions/70666918
复制相似问题