我尝试遵循默认的 Web API 教程:http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api
这是我做的:
1) 我在我的 WebApiConfig
中添加了 Action 路由:
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
2) 我通过客户端 javascript 调用在我的导航栏上添加了一个链接:
<a onclick="RetrieveNext();" href="#">Retrieve next</a>
3)这是我的观点:
<div class="row">
<div class="col-md-4">
<h2>Next barcode</h2>
<p id="barcode">
No available barcode
</p>
</div>
</div>
<script>
var uri = 'api/Barcode';
$(document).ready(function () {
});
function RetrieveNext() {
uri = 'api/Barcode/RetrieveNext';
$.getJSON(uri)
.done(function (data) {
$('#barcode').text(data);
})
.fail(function (jqXHR, textStatus, err) {
$('#barcode').text('Error: ' + err);
});
}
</script>
4) 这是我的带有 1 个操作的简单 ApiController:
public class BarcodeController : ApiController
{
[HttpGet]
public IHttpActionResult RetrieveNext()
{
string barcode = "123456";
if (barcode == null)
{
return NotFound();
}
return Ok(barcode);
}
}
当我点击我的链接时,我得到: Error: Not Found
在我的 <p id="barcode">
中,这意味着 JavaScript 可以工作,但没有调用 Action。
这是通话详情:
我错过了什么?我在我的 Action 中放置了断点,但我无法访问这段代码...
最佳答案
这有多蠢???我在这里发现了问题所在:404 error after adding Web API to an existing MVC Web Application
与global.asax文件有关。即使您将 WEB API 添加到您的项目中,visual studio 也会为您打开 readme.txt 文件,并提供一些提示如何将几行代码添加到您的 global.asax 文件中。没有一个字是关于你应该把你的代码放在哪里的(这里真的很重要!)
所以,从上面列出的帖子中复制: 虽然它不适用于:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
GlobalConfiguration.Configure(WebApiConfig.Register); //I AM THE 4th
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
适用于:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register); //I AM THE 2nd
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
关于javascript - 无法在 MVC 5 应用程序的 api Web API 2 Controller 中访问 Action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27607808/