发布时无法命中 AspNetCore 3.1 MVC API 端点
Posted
技术标签:
【中文标题】发布时无法命中 AspNetCore 3.1 MVC API 端点【英文标题】:Cannot hit AspNetCore 3.1 MVC API endpoints when published 【发布时间】:2021-06-13 13:26:46 【问题描述】:AspNetCore 3.1 MVC API。常规启动
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
app.UseHttpsRedirection();
app.UseRouting();
app.UseEndpoints(endpoints =>
endpoints.MapControllers();
);
在 localhost 上运行时,我可以访问所有端点。当我发布时,所有端点都返回 404。
为了测试我发布到正确的位置,我添加了一个显示在浏览器中的端点
public IActionResult Index()
return Content("Users Index");
当我浏览到 https://subweb.mainweb/users/api/users/index
时,我看到浏览器中返回了 Users Index
,但所有其他端点都返回 404。
控制器被装饰
[Route("api/Users/[action]")]
public class UsersController : ControllerBase
所有其他端点都被修饰,例如
[HttpGet]
[ActionName(nameof(IsRegisteredUser))]
public IActionResult IsRegisteredUser()
但我不明白这会对本地运行和服务器上的运行产生什么影响。
怎么可能所有端点都在 localhost 中可用,但发布时只有测试端点?我从哪里开始看?
【问题讨论】:
请仔细检查您输入的请求网址,它可能看起来像https://subweb.mainweb/users/api/users/IsRegisteredUser
,请不要错过/api/users/[action]
之前的“users”。此外,请检查是否有任何重写规则应用于您服务器上的站点/应用程序。
@Fei Han 你有鹰眼!这是一个失踪的用户。请提出作为答案,以便我接受。
嗨@Vague,很高兴听到它确实有助于解决问题。我已将其发布为答案,希望它可以帮助其他社区成员快速解决类似问题。
【参考方案1】:
当我浏览到 https://subweb.mainweb/users/api/users/indexI 时,请参阅浏览器中返回的用户索引,但所有其他端点都返回 404。
根据您上面的示例 URL,您似乎将 ASP.NET Core Web API 应用程序作为子应用程序(子应用程序)托管在服务器上的 /users
。
要访问端点,您应该确保在 URL 中包含子应用的路径库,否则会导致 404 - Not Found 错误。
【讨论】:
以上是关于发布时无法命中 AspNetCore 3.1 MVC API 端点的主要内容,如果未能解决你的问题,请参考以下文章
尝试激活“AuthenticateController”时无法解析“Microsoft.AspNetCore.Identity.UserManager”类型的服务
尝试激活“AuthController”时无法解析“Microsoft.AspNetCore.Identity.UserManager”类型的服务
.Net core 3.1 控制台应用程序中没有“Microsoft.AspNetCore.Hosting.Server.IServer”类型的服务已注册错误
.NET Core 3.0或3.1 类库项目中引用 Microsoft.AspNetCore.App
尝试激活“Student.Controllers.MyController”时无法解析“Microsoft.AspNetCore.Mvc.ActionContext”类型的服务