4

既存のクラスで Reflection Provider (http://msdn.microsoft.com/en-us/library/dd728281.aspx) を使用して WCF データ サービス (.net 4.5 VS 2012) を構築しています。リクエスト ヘッダーに「Accept: application/atom+xml」を指定して、サービスに正常にアクセスできます。ただし、リクエストヘッダーで「Accept」を「application/json」に変更すると、「サポートされていないメディアタイプがリクエストされました」というエラーが発生しました。私が学んだように、WCF データ サービスは JSON をサポートしていますが、サービスで JSON データのクエリを有効にするにはどうすればよいですか?

ありがとう

編集: 以下にコードを貼り付けます: まず、 Product クラスを定義します:

[DataServiceKeyAttribute("Id")]
public class Product
{
    public int Id { get; set; }
    public int Price { get; set; }
    public string Name { get; set; }
}

次に、ProductContext クラスを定義します。

public class ProductContext
{
    private List<Product> products = new List<Product>();

    public ProductContext()
    {

        for (int i = 0; i < 100; i++)
        {
            var product = new Product();
            product.Id = i;
            product.Name = "ID - " + i.ToString();
            product.Price = i + 100;
            products.Add(product);
        }
    }

    public IQueryable<Product> Products
    {
        get
        {
            return products.AsQueryable();
        }
    }
}

と私の ProductService.svc.cs

[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class ProductsService : DataService<ProductContext>
{
    // This method is called only once to initialize service-wide policies.
    public static void InitializeService(DataServiceConfiguration config)
    {
        // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
        // Examples:
        config.SetEntitySetAccessRule("Products", EntitySetRights.AllRead);
        //config.SetServiceOperationAccessRule("MyServiceOperation", ServiceOperationRights.All);
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
    }
}
4

3 に答える 3

4

WCF Data Services 5.0を使用している場合は、JSONサポートの変更について説明している次のブログ投稿を参照してください:http://blogs.msdn.com/b/astoriateam/archive/2012/04/11/what-happened -to-application-json-in-wcf-ds-5-0.aspx

于 2012-10-20T14:20:34.587 に答える
2

tl; dr:のリクエストヘッダーを追加します

MaxDataServiceVersion:2.0

于 2012-11-12T20:36:59.077 に答える