WCF Data Services で $format=json を使えるようにする

データ サービス リソースへのアクセス (WCF Data Services)URI Conventions | Open Data Protocol | ODataOpen Data Protocol | OData を見る限り、クエリストリングに、$format=json を渡すと JSON で結果が取れそうな気がしますよね?
でも、上手く動きませんでした。

WCF Data Services のコード

using System.Data.Services;
using System.Data.Services.Common;

namespace Hoge
{
  public class MyDataService : DataService<HogeEntities>
  {
    public static void InitializeService(DataServiceConfiguration config)
    {
      config.SetEntitySetAccessRule("*", EntitySetRights.All);
      config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
    }
  }
}

他のパラメータ($skipや$top等)は動くんですが、$format だけ結果が返ってきません。


色々調べてみると、JSONP and URL-controlled format support for ADO.NET Data Services - Home を使えば $format=json が使えるようになるみたいです。
というわけで試してみました。ダウンロードした JSONPSupportBehavior.cs をプロジェクトに追加し、WCF Data Services クラスに属性を付与します。

WCF Data Services のコード

using System.Data.Services;
using System.Data.Services.Common;

namespace Hoge
{
  [DataServicesJSONP.JSONPSupportBehavior]
  public class MyDataService : DataService<HogeEntities>
  {
    public static void InitializeService(DataServiceConfiguration config)
    {
      config.SetEntitySetAccessRule("*", EntitySetRights.All);
      config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
    }
  }
}


このファイルを開いてみると、JSON 形式で結果が返ってきています。