2013-02-06 47 views
0

我一直在爲這個問題煩惱,而我無法發現問題。 我對WCF服務沒有太多的經驗,所以我希望這可能是我錯過的簡單東西。將數據發佈到來自JQuery的WCF OData服務

我已經建立了這個WCF OData服務暴露我們的實體模型,像這樣:

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

現在我已經訪問使用jQuery的數據沒有問題,但一旦我更新JSONP對象我抓取,然後把它放回服務來更新數據庫,我找回了一個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 - 未實現'。

任何幫助將不勝感激。

+0

當你回來從WCF數據服務的錯誤代碼,可以考慮使用在[this]中的步驟(http://blogs.msdn.com/b/phaniraj/archive/2008/06/18/debugging-ado-net-data-services.aspx)博客文章,以獲得更多關於發生了什麼的上下文。 –

回答

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