我现在正在开发一个基于.NET Framework 4.7.2的应用程序。我需要在我的C#代码中调用Web API Controller。
我正在更新一个动态对象,我不能创建任何视图模型。动态对象具有以下结构,并将动态填充不同的键:
List<KeyValuePair<int,Dictionary<string, object>>>
调用代码如下:
var task = Task.Run(async () => await UpdateMyInformation(myDynamicObject));
var test = task.Result;
方法实现:
private async Task<dynamic> UpdateMyInformation(dynamic data)
{
var content = new StringContent(JsonConvert.SerializeObject(data).ToString(),
Encoding.UTF8, "application/json");
var baseUrl = "http://localhost:1234/api/MyInformationController";
using (HttpClient client = new HttpClient())
{
var response = await client.PutAsync(baseUrl, content);
response.EnsureSuccessStatusCode();
var result = response.Content.ReadAsStringAsync().Result;
return result;
}
}
API控制器的样子如下所示:
public class MyInformationController : ApiController
{
[HttpPut]
public async Task<dynamic> Put(dynamic myData)
{
// I need to parse data and return the new dynamic object
// Manipulate myData according to a given logic
return myData;
}
}
我可以在控制器中接收数据,我的问题是:我应该使用动态方式将JSON对象传递到我的控制器中吗?
也许更好的解决方法是什么?
JObject
而不是使用dynamic
,因为JObject
允许您比dynamic
更轻松地操作JSON。 - er-sho.Result
阻塞异步操作,尽管两者无关。 - CrowcoderTaskCreationOptions.LongRunning
。 - Tobias Moe Thorstensen