【发布时间】:2020-08-12 23:40:16
【问题描述】:
这里的措辞可能全都错了,如果我用错了词,请原谅并纠正我。我来自传统 ASP.Net Web 应用程序的世界,我可以简单地将 ApiController 添加到我的 Web 应用程序项目并开始运行。但是,我现在使用的 ASP.Net Core Web 应用程序似乎并非如此。
我创建了一个 Web 应用程序项目:
选择网络应用程序的类型:
然后我将我的控制器添加到根目录:
为它写了一小段代码:
[Route("[controller]")]
[ApiController]
public class ModulesController : ControllerBase {
[HttpPost]
[Route("Modules/Execute")]
public void Execute([FromBody] string key) => ModuleManager.Instance.TryExecute(key);
}
然后尝试用AJAX调用它:
$.ajax(
{
contentType: "application/json",
data: JSON.stringify({ executionKey: executionKey }),
dataType: "jsond",
type: "POST",
url: "/Modules/Execute",
failure: function (msg) {
alert("failure");
},
success: function (msg) {
alert("success");
}
});
Annnnnd 我收到一个 404 错误,提示找不到。
现在,我尝试了其他一些方法,例如:
- 更改获取。
- 从控制器中删除
Route。 - 添加控制器路由映射到
Startup.cs:
^
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller}/{action=Index}/{id?}");
在此过程中还有其他几次失败的尝试。我显然错过了这个新设置的一些基本内容,我无法弄清楚它是什么。
如何从我的 ASP.NET Core 网页调用我的 API 控制器?
注意:我尝试手动将其设为GET,以查看是否可能是路径问题,但无论有多少不同,也无法以这种方式点击它我试过的组合。
【问题讨论】:
-
Modules控制器你有一个返回 void 的方法。此类方法作为端点公开。您需要在 Controller 中创建操作方法。
标签: c# api asp.net-core razor-pages web-application-project