2

我正在尝试使用 mvc4 中的 web api 创建我的第一个 REST 应用程序。我有一个使用 HttpPost 动词设置的控制器,但由于某种原因,当我单击链接以将 xml 字符串发布到控制器时,我收到一个错误 - "{"Message":"No HTTP resource was found that match the request URI ' /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";
    }
}
4

1 回答 1

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'); }
        });
于 2013-06-18T18:58:19.843 回答