在我的服务器上,我有这样的功能
[HttpPost()]
public void Hello([FromBody]int Version)
{
}
如果省略[FromBody] int版本参数,则能够调用上述API
var c = new HttpClient();
var Json = new StringContent(JsonConvert.SerializeObject(new { Version = 123}), Encoding.UTF8, "application/json")
var Resp = Api.PostAsync("http://MyURL", Json).Result;
如果包含[FromBody] int版本。我收到以下错误:
Request.Body
{Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpRequestStream}
CanRead: true
CanSeek: false
CanTimeout: false
CanWrite: false
Length: '((Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpRequestStream)Request.Body).Length' threw an exception of type 'System.NotSupportedException'
Position: '((Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpRequestStream)Request.Body).Position' threw an exception of type 'System.NotSupportedException'
ReadTimeout: 'Request.Body.ReadTimeout' threw an exception of type 'System.InvalidOperationException'
WriteTimeout: '((Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpRequestStream)Request.Body).WriteTimeout' threw an exception of type 'System.NotSupportedException'
我已经找到答案,在dotnet core 3.x中。
使用Microsoft.AspNetCore.Mvc.NewtonsoftJson而不是NewtonsoftJson
添加services.AddControllers()。AddNewtonsoftJson();
]