我一直在打破这个问题,我无法发现问题。 我没有那么多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 - Not Implemented”。
非常感谢任何帮助。
答案 0 :(得分:1)
听起来您的服务未配置为可更新。为了使您的服务支持更新,您必须提供IUpdatable(或IDataServiceUpdateProvider)的实现。
如果您使用实体框架作为提供商,那么这应该只是开箱即用。但是如果您使用的是反射提供程序,则需要自己实现此接口。提供此接口的最简单方法可能是在DataService中的“T”类上实现它。
有关详细信息,请查看以下文章:http://msdn.microsoft.com/en-us/data/gg191846.aspx(尝试搜索IUpdatable和IDataServiceUpdateProvider)或其他堆栈溢出问题:Any good sample for an updatable WCF Data Service implementation