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) の実装を提供する必要があります。

Entity Framework をプロバイダーとして使用している場合、これはすぐに使用できるはずです。ただし、リフレクション プロバイダーを使用している場合は、このインターフェイスを自分で実装する必要があります。おそらく、このインターフェイスを提供する最も簡単な方法は、DataService の「T」クラスに実装することです。

詳細については、次の記事を参照してください: http://msdn.microsoft.com/en-us/data/gg191846.aspx (IUpdatable および IDataServiceUpdateProvider を検索してみてください)、またはこの他のスタック オーバーフローの質問:更新可能なサンプルの良いサンプルWCF データ サービスの実装

于 2013-02-07T18:29:08.933 に答える