1
votes

I'm using DevExpress, XAF, and XPO for my application. I need to expose my data from a webservice. ASP.NET Web API V2 is not compatible with XPO objects... (If you found how to... I will take it!).

The DevExpress wizard can help me to generate a WCF Web Service project, where

  • MyContext inherits from XpoContext
  • MyService inherits from XpoDataServiceV3 (and the class have an attribute : [JSONPSupportBehavior])

I would get a list of my XPO Objects, for that, I wrote the next code

[WebGet]
public IQueryable<MyType> Get()
{
    return new XPQuery<MyType>(new UnitOfWork());
}

I have found various properties on WebGet attribute : RequestFormat, ResponseFormat, BodyStyle, UrlTemplate. On Format properties, I have the choise between WebMessageFormat.Json and WebMessageFormat.Xml. Logically, I type WebMessageFormat.Json.

When I go on my favorite webbrowser or fiddler, I do this request:

GET http://localhost:51555/MyService.svc/Get HTTP/1.1
User-Agent: Fiddler
Host: localhost:51555
Content-Type: application/json

But this not works... The response is :

HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Length: 24250
Content-Type: application/atom+xml;type=feed;charset=utf-8
Server: Microsoft-IIS/10.0
...

And content was wrote in XML.

We are okay, I have configure my query with format properties... :

[WebGet(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
1

1 Answers

1
votes

I've found ! On your WCF service global class, wrote the following code :

HttpContext.Current.Request.Headers.Add("Accept", "application/json;");