我已经使用以下项目创建了一个解决方案
FrontEnd是一个mvc4 Web应用程序,MyWebAPI是一个mvc4 webAPI
我希望能够从FrontEnd项目访问MyWebAPI控件方法。但它并不起作用,因为它只是抱怨在我运行webAPI网址时无法找到数据。
我是否必须做更多事情,以便我的FrontEnd可以与MyWebAPI交谈?
例如,我只是尝试运行此预生成的webAPI控件方法
public string Get(int id)
{
return "value";
}
无法找到。但是,如果我将启动项目更改为MyWebAPI,那么它可以工作。所以我的问题是如何制作它以便我可以从我的FrontEnd项目访问MyWebAPI?
此问题实际上与此one相同,但它没有解释当我们在同一解决方案中时如何从前端访问webAPI
修改
$(document).ready(function() {
$("#clickMe").click(function() {
var id = $("#dataBox").val();
$.ajax({
url: "http://localhost:11982/api/Movie/GetMovie",
data: { id: id },
type: "get",
contentType: "application/json;charset=utf-8",
success: function(data) {
alert(data);
},
error: function(jqXHR, status, errorThrown) {
// alert("Error " + status + "\nError Thrown" + errorThrown + "\n" + jqXHR )
}
})
})
})
更新2012-08-30
我在我的解决方案中更新了不同的包,其中包括WebAPI beta到WebAPI rc版本。现在由于某种原因,当我向任何WebAPI控制器发送表单请求或ajax请求时,它将为表单请求响应表明没有找到这样的控制器,并且对于ajax请求,它将永远加载而不返回响应
之前遇到类似问题的人?
之前的解决方案是在本地IIS服务器中运行我的FrontEnd和MyWebAPI。但是,因为我更新了所有软件包,所以它现在停止工作了。
答案 0 :(得分:2)
似乎你的问题是你需要同时运行FrontEnd& MyWebAPI同时从Visual Studio进行投影。实际上,使用解决方案的一个有点模糊的启动选项来配置Visual Studio是很容易的。
右键单击解决方案资源管理器窗格中的解决方案节点(而不是具有相同名称的项目节点)。从上下文菜单项中,选择“设置启动项目”。在对话框中,单击“多个启动项目”选项,然后选择FrontEnd& MyWebAPI项目。单击“确定”以保存选项。现在,两个项目都应该在运行调试器时启动,MyWebAPI调用将响应FrontEnd。只需确保两个项目都在不同的端口上运行。
<强>更新强>
Web API RTM发生了重大变化。其中一项更改是用于提取ApiController
操作参数的约定。查看新属性FromUri
和FromBody
的使用方式in this SO question and answer