問題的重點在於爲請求提供標頭,所以我認爲只有HttpClient.SendAsync()方法纔會被考慮。不PostAsync或PostAsJsonAsycn()如何通過帶頭的HttpClient將複雜對象發佈到控制器的Post方法?
這裏是我用來發送POST請求的代碼:
var request = new HttpRequestMessage()
{
RequestUri = new Uri(@"http://test/" + controllerUri),
Method = HttpMethod.Post,
};
request.Headers.Add(_authHeader, c_authToken);
request.Content = new ObjectContent<RequestType>(content, new JsonMediaTypeFormatter());
var result = _client.SendAsync(request).Result;
我經常收到500錯誤,指出時間屬性序列化的對象上是無效的,雖然在事實上它是在對象中設置的。
我試着將mediatype設置爲「application/json」的StringContent,但我得到了同樣的錯誤。
控制器的POST方法具有以下特徵:
公共HttpResponseMessage郵政(MyContentObject內容) { ... }
例外是進入到方法之前拋出。
有趣的是,當我註釋掉從MyContentObject [必需]屬性:
public class MyContentObject
{
[Required]
public int Duration { get; set; }
public decimal SomePropA { get; set; }
public bool SomePropB { get; set; }
}
它的工作原理和時間屬性設置正確的預期。
所以也許問題是爲什麼在這種情況下添加[必需]屬性爲什麼會造成這麼多問題?爲什麼有[Required]屬性添加到int屬性中,可能存在您的問題。我的回答是我不知道是誰加的,對我來說這沒有意義,但如果是這樣,請讓我知道。
謝謝