2016-04-18 61 views
0

大家好我是新來的Asp.net Web API,我有我的問題post data using asp.net Web API並得到我的答案接受。在asp.net web API中發佈數據頭

這是一個擴展,我要張貼在郵遞員一些頭值數據同樣的問題,我的代碼如下

public HttpResponseMessage PostCustomer([FromBody] NewUser userData, string devideId) 
{ 
    //My code 
    return response; 
} 

當我打這郵差傳遞值JSON格式BODY - 原始我得到的消息如下

未找到與請求URI相匹配的HTTP資源 在與請求匹配的控制器上未找到任何操作。

請幫幫我。

+0

顯示你的路由配置,以及如何準確地發送該請求。 – CodeCaster

回答

1

看起來您已爲您的操作添加了一些額外的devideId字符串參數。請確保你把它作爲查詢字符串發出請求時提供一個值:

POST http://localhost:58626/api/customers?devideId=foo_bar 

如果你不想做那麼需要此參數,你應該讓可選的(在可選方法參數方面在.NET):

public HttpResponseMessage PostCustomer([FromBody] NewUser userData, string devideId = null) 
{ 
    ... 
} 

現在,您可以張貼到http://localhost:58626/api/customers沒有爲這個參數提供一個值。

備註:您不需要用[FromBody]屬性修飾複雜的對象類型(例如NewUser)。這是Web API的默認行爲。


更新:這裏是你如何能讀自定義標題:

public HttpResponseMessage PostCustomer(NewUser userData) 
{ 
    IEnumerable<string> values; 
    if (this.Request.Headers.TryGetValues("X-MyHeader", out values)) 
    { 
     string headerValue = values.FirstOrDefault(); 
    } 

    ... 

    return response; 
} 
+0

而不是作爲參數傳遞如何從標題讀取並獲取標題值? –

+0

通過在你的代碼中使用'Request.Headers'集合,更具體地說'TryGetValues'方法。我已經更新了我的答案,以舉例說明。 –

相關問題