2012-10-02 105 views
3

有沒有人找到正確的解決方案? 我剛剛嘗試過WebAPI,希望很大(在完成成功實現其他api的php/restler後,使用KO和HTML5)。獲取像魅力一樣工作。無論總是我的變量爲空,在過去的20多個小時內都陷入了帖子中。無論如何,我的DTO和存儲庫實現都是我的框架的一部分。 我嘗試使用FromBody提示和幾乎所有可用的搜索。 我正在測試這個使用CRest和提琴手。 我很擅長獲取原始request.content,然後將自己處理json加載等。 這一點我只是感到沮喪,並考慮回到4.0並使用wcf再次生成ResT。 任何幫助將非常感激......Web API Post參數始終爲空

DTO: 
public class TestEntity 
{ 
    public TestEntity() { } 
    public int UserId { get; set; } 
    public string UserName { get; set; } 
} 

控制器: 公共類的TestController:ApiController

{ 
    // POST api/test 
    public TestEntity PostTest([FromBody] TestEntity t) 
    { 
     var x = new TestEntity(); 
     if (!this.ModelState.IsValid) 
     { 

      return x; 
     } 
     else 
     { 
      return x; 
     } 
    } 

我調用直通CREST ....

+0

顯示一些代碼... – Cybermaxs

+0

通過提琴手使用你的代碼,並調用它與XML和JSON爲我工作。您可以通過向控制器添加一個GET方法來排除路由問題,該方法返回TestEntity和一些測試數據並調用它。如果可行,請將它返回的數據作爲POST請求主體複製到Fiddler中,並查看是否被填充。這將排除序列化問題。如果仍然失敗,請嘗試發佈完整控制器代碼,以及您在Fiddler中輸入的URL和數據以進行測試。 – smlync

+0

在拉琴,我得到: {「ExceptionType」:「System.InvalidOperationException」,「消息」:「沒有MediaTypeFormatter可從與‘未定義‘’媒體類型’內容讀類型‘TestEntity’的對象。」」堆棧跟蹤「:」 當我在波峯運行它真正去運行特定的方法(我可以調試)和參數的時值爲null – rahul

回答

0

您的問題來了,當你API調用使用XML類型,我認爲,在默認情況下使用JSON序列

的Web API,因此您的申請後工作您將內容類型更改爲JSON。

請參見下面的代碼,並添加到您的WebApiConfig.cs,它使用來處理XML類型的請求。

config.Formatters.XmlFormatter.UseXmlSerializer = TRUE;

然後再次調用您的服務。它將解決這個問題。