既存のクラスで 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;
}
}