【发布时间】:2019-11-14 11:18:29
【问题描述】:
我正在尝试使用 PostAsJsonAsync 发布对象,但在接收 API 中它始终为空。调用代码在这里:
public async Task UploadDocument(FileDto model)
{
var response = await _httpClient.PostAsJsonAsync("file/UploadDocument", model);
response.EnsureSuccessStatusCode();
}
接收代码的签名在这里:
[HttpPost]
[Route("UploadDocument")]
public async Task<IHttpActionResult> UploadDocument(FileDto document)
FileDto 在两个项目中是相同的,并且只包含一个字符串属性“FileName”
问题是文档总是为空。
我可以使用 PostAsync 工作正常:
public async Task UploadDocument(FileDto model)
{
string inputJson = Newtonsoft.Json.JsonConvert.SerializeObject(model);
HttpContent inputContent = new StringContent(inputJson, Encoding.UTF8, "application/json");
var response = await _httpClient.PostAsync("file/UploadDocument", inputContent);
response.EnsureSuccessStatusCode();
}
查看 Fiddler,第一个(不工作)示例,请求如下所示:
POST http://localhost:59322/api/file/UploadDocument HTTP/1.1
Accept: application/json
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf-8
Host: localhost:59322
28
{"FileName":"File-0000004157.jpg"}
0
第二个(工作)示例在 Fiddler 中如下所示:
POST http://localhost:59322/api/file/UploadDocument HTTP/1.1
Accept: application/json
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf-8
Host: localhost:59322
{"FileName":"File-0000004157.jpg"}
第一个示例似乎添加了额外的文本 - 请参阅“28”和“0”。
这段文字来自哪里。我可以使用 PostAsync,但是当 PostAsJsonAsync 为您添加额外的代码时,这似乎很可惜。
有人有什么想法吗?
【问题讨论】:
标签: asp.net-core dotnet-httpclient