我有下面的方法可以将数据发布到URL
public async Task<IActionResult> PostAsync(string method, string data, bool isJson = true, long key = 0)
{
IActionResult result;
try
{
var proxyUrl = await EstablishProxyUrlAsync(method, key).ConfigureAwait(false);
var content = isJson ? new StringContent(data, Encoding.UTF8, "application/json") : new StringContent(data);
var response = await this._httpClient.PostAsync(proxyUrl, content).ConfigureAwait(false);
result = await ProcessResponseAsync(response).ConfigureAwait(false);
}
catch (Exception e)
{
Log.Error(e, this.GetType().Name + ": Error in PostAsync");
throw;
}
return result;
}
如您所见,我 am 设置ContentType,有关处理StringContent的大量文章都谈到了使用此方法。
但是,我只是把它找回来
{StatusCode: 500, ReasonPhrase: 'Internal Server Error', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Date: Sun, 29 Jul 2018 19:19:35 GMT
Server: Kestrel
Content-Length: 0
}}
就发现问题所在而言,这显然是毫无用处的响应
被调用的方法在下面
[HttpPost]
[ActionName("Add")]
public async Task<IActionResult> AddAsync(StringContent content)
{
var myJson= await content.ReadAsStringAsync().ConfigureAwait(false);
var object= JsonConvert.DeserializeObject<MyObject>(myJson);
var result = await _service.AddAsync(object).ConfigureAwait(false);
return result;
}
如您所见,我包含了HttpPost
有人知道是什么原因造成的吗?
我正在使用服务结构,并且此URL在分区上是一个URL,但是我认为这不是问题,因为此路由在其他区域也有效
保罗
答案 0 :(得分:3)
被调用的方法应该进行重构,以遵循正确的语法,并将模型传递给操作,并让模型绑定程序用传入的数据填充它。
[HttpPost]
[ActionName("Add")]
public async Task<IActionResult> AddAsync([FromBody] MyObject model) {
var result = await _service.AddAsync(model);
return result;
}
假设_service.AddAsync(model);
在等待时返回IActionResult