我正在尝试使用mvc4中的web api创建我的第一个REST应用程序。我有一个使用HttpPost动词设置的控制器,但出于某种原因,当我点击链接将xml字符串发布到控制器时,我收到一个错误 - “{”消息“:”没有找到与请求URI匹配的HTTP资源' /api/Apply/ApplyToJob'.","MessageDetail":"在控制器'Apply'上找不到与请求匹配的操作。“}”任何想法我可能做错了什么?这是视图页面......
<a href="javascript:void(0);" id="lnkPost">Post Data</a>
<script type="text/javascript">
window.onload = function () {
$("#lnkPost").on("click", function () {
$.get("/TestResponse.xml", function (d) {
$.ajax({
//contentType: "text/xml",
//dataType: "xml",
type: "post",
url: "/api/Apply/ApplyToJob",
data: {
"strXml": (new XMLSerializer()).serializeToString(d)
},
success: function () { console.log('success'); }
});
});
});
};
</script>
这是控制器。
public class ApplyController : ApiController
{
[HttpPost]
[ActionName("ApplyToJob")]
public string ApplyToJob(string strXml)
{
return "success";
}
}
答案 0 :(得分:2)
修改动作的参数,如下所示:
public string ApplyToJob([FromBody]string strXml)
这是因为没有这个FromBody
属性,字符串参数应该来自Uri。由于您在Uri中没有它,因此操作选择失败。
另外,查看您的客户端代码,您不应该在请求中设置适当的内容类型标题吗?
被修改:
您可以将您的javascript修改为如下所示,看看它是否有效:
$.ajax({ contentType: "text/xml",
dataType: "xml",
type: "post",
url: "/api/values",
data: "your raw xml data here",
success: function () { console.log('success'); }
});