2012-11-27 28 views
3

我的WebApi操作返回從JObject.parse(jsonString)構建的動態對象;ASP MVC 4 Web Api包裝我的JSON結果

我有GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();

但是該對象被封裝在響應中的默認結果消息中。

根據這一article返回的匿名對象是好的,應該給予預期的結果

我使用的是異步控制器,因爲我不得不等待一些ReadAsStringAsync()我在這裏的行動protoype:

public async Task<dynamic> Pics(string flavor, int pagesize) 

預期結果:

{"flavor":"","maxFeedSize":0,"mediaContent":[]} 

結果返回動態對象時,我有:

{ 
     "Result": { 
      "flavor": "", 
      "maxFeedSize": 0, 
      "mediaContent": [] 
     }, 
     "Id": 1, 
     "Exception": null, 
     "Status": 5, 
     "IsCanceled": false, 
     "IsCompleted": true, 
     "CreationOptions": 0, 
     "AsyncState": null, 
     "IsFaulted": false 
    } 
+0

我不清楚你是什麼問。你期望的行爲是什麼,你實際上得到了什麼樣的行爲? –

+2

通過你看到的東西,你會得到一個序列化的任務'...你可以發佈你的所有控制器操作代碼? – Charlino

回答

1

正如我的想法和評論中所述。由於天真的方法超載,我返回了Task<Task<dynamic>>

public async Task<dynamic> Pics(string flavor, string pagesize) 
    { 
     return Pics(flavor, pagesize, null); 
    } 

編輯: 我想這是因爲不像MVC路線ommit字符串參數拋出即使字符串爲空

public async Task<dynamic> Pics(string flavor, string pagesize, string startid =null) 

工作的錯誤罰款:)

+0

或者你可以讓你的超載非'async'(提示:聽你的編譯器警告)。像這樣:'public Task Pics(string flavor,string pagesize){return Pics(flavor,pagesize,null); }' –