0

我一直在努力解决这个问题,但我无法发现这个问题。我对 WCF 服务没有太多经验,所以我希望它可能是我错过的一些简单的东西。

我已经设置了这个 WCF OData 服务,像这样公开我们的实体模型:

    public static void InitializeService(DataServiceConfiguration config)
    {
        config.SetEntitySetAccessRule("*", EntitySetRights.All);
        config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
    }

现在我一直在使用 jQuery 毫无问题地访问该数据,但是一旦我更新了我获取的 jsonp-object,并将其放回服务以更新数据库,我将返回一个 HTTP 501 代码(未实现) .

这是我编写的将对象放回服务的代码:

    function commitData() {
         $.ajax({
            url: 'http://localhost:7634/API/Service.svc/tbl_bericht_vertalingen/?$format=json&Authorization=' + userGuid,
            contentType: 'application/json',
            type: 'PUT',
            data: jsonObject,
            dataType: 'json',
            error: function () { alert("oops!"); },
            success: updateCallback
        }); 
    }

    function updateCallback(result) {
        var record = result["d"];
        alert("Updated on record with ID " + record.Id);
    }

jsonObject 与我之前从服务中收到的对象相同,具有一些更新的属性。

如前所述,调用这部分 jQuery 会导致我从服务中返回“501 - 未实现”。

任何帮助将不胜感激。

4

1 回答 1

1

听起来您的服务未配置为可更新。为了使您的服务支持更新,您必须提供 IUpdatable(或 IDataServiceUpdateProvider)的实现。

如果您使用实体框架作为您的提供者,这应该是开箱即用的。但是如果你使用反射提供者,你需要自己实现这个接口。提供此接口的最简单方法可能是在 DataService 中的“T”类上实现它。

有关更多信息,请查看这篇文章: http: //msdn.microsoft.com/en-us/data/gg191846.aspx(尝试搜索 IUpdatable 和 IDataServiceUpdateProvider),或其他堆栈溢出问题:任何好的可更新示例WCF 数据服务实现

于 2013-02-07T18:29:08.933 回答