未找到与请求URI匹配的HTTP资源

时间:2015-12-07 21:46:57

标签: c# jquery ajax web-services

这是我调用GetFileContents的ajax调用:

  views.titleClick = function (e) {
            var grid = $("#documentsGrid").data("kendoGrid");
            var docId = grid._data[0].DocumentId;

            $.ajax({
                type: "GET",
                //"Document/GetByReview?reviewId=" + that.selectedReview.ReviewId;
                url: constants.serviceUrl + "Document/GetFileContents?DocumentId=" + docId,
                contentType: "application/json; charset=utf8",

            })
        };

以下是我的Controller GetFileContents

        [HttpGet]
    public  HttpResponseMessage GetFileContents(int id)
    {
        DataResponseSingle<Document> result = BusinessAccess.GetById(id);

        if (result.ResponseType != ResponseType.Success)
        {
            return CreateHttpResponse(result);
        }

        if (result.Data == null || result.Data.DocumentData == null)
        {
            return CreateHttpResponse(ResponseType.NotFound);
        }

        return CreateStreamContentHttpResponse(result.Data.DocumentData, "application/octet-stream", result.Data.Name);
    }

每当titleClick被实例化时,我都会收到一条错误

  

“{”消息“:”找不到与请求URI'http://localhost/Services/HumanResources/api/Document/GetFileContents?DocumentId=4'匹配的HTTP资源。“,”MessageDetail“:”否   在控制器'Document'上找到了匹配的动作   请求。 “}”

。我在这个服务文件中有其他控制器,我可以称之为完全正常。我猜我的语法有问题吗?请帮忙,我环顾四周,但找不到具体问题。谢谢!

2 个答案:

答案 0 :(得分:0)

更改您的JS参数DocumentId以匹配您的控制器ID。

$.ajax({
  type: "GET",
  //"Document/GetByReview?reviewId=" + that.selectedReview.ReviewId;
  url: constants.serviceUrl + "Document/GetFileContents?id=" + docId,
  contentType: "application/json; charset=utf8",
});

答案 1 :(得分:0)

asp.net Web API给我带来了同样的错误,但我用不同的方法解决了这个问题:

第一种方法

我用AclController将控制器名称更改为AuthorizeController并解决了我的问题。

第二种方法

如果你使用带有string,int,bool等类型的方法参数,也许这个方法可以解决你的问题。然后接受这个错误并且不使用string,int,bool等类型只使用类或接口等那么类型可能解决了你的问题。