【发布时间】:2019-02-06 19:59:28
【问题描述】:
我尝试通过 httpClient.GetAsync 调用 get api。但我得到了例外
"System.ArgumentException: 无法确定 JSON 对象类型 类型 System.Threading.Tasks.Task
1[Newtonsoft.Json.Linq.JObject].\r\n at Newtonsoft.Json.Linq.JValue.GetValueType(Nullable1 当前,对象 值)\r\n 在 Newtonsoft.Json.Linq.JContainer.CreateFromContent(对象内容)\r\n 在 Newtonsoft.Json.Linq.JContainer.AddInternal(Int32 索引,对象 内容,布尔型 skipParentCheck)\r\n at MediaIngestionSFSvc.Controllers.MediaIngestionController.d__2.MoveNext()"
这是我尝试调用的 api
public IActionResult GetSKUByEditionDisplayName(string edition)
{
string message = null;
try
{
if (string.IsNullOrEmpty(edition))
{
message = $"Edition is null";
throw new ArgumentNullException(message);
}
SqlQuerySpec sqlQuery = repository.GenerateQuery(CollectionName, new KeyValuePair<string, object>(Enums.id.ToString(), MediaRefreshConstants.SKUtoEditionTable));
IEnumerable<JObject> docs = repository.ReadItemAsync<JObject>(sqlQuery);
if (!docs.Any())
{
message = $"No SKUtoEditionTable found in Cosmos db";
throw new NullReferenceException(message);
}
string responseBody = JsonConvert.SerializeObject(docs);
string jsonObject = responseBody.Trim().Trim('[', ']');
JObject responseObject = JObject.Parse(jsonObject);
if (responseObject[edition] == null)
{
message = $"No Edition {edition} found in SKUtoEditionTable";
throw new NullReferenceException();
}
string sku = responseObject[edition].ToString();
return CreateActionResult(HttpStatusCode.OK, sku);
} catch (Exception e) when (e is ArgumentNullException || e is NullReferenceException)
{
message = $"Fail to retrieve sku from EditionToSKUTypeMapping table";
return CreateActionResult(HttpStatusCode.BadRequest, e.ToString());
} catch (Exception ex)
{
message = $"Fail to retrieve sku from EditionToSKUTypeMapping table";
return CreateActionResult(HttpStatusCode.InternalServerError, ex.ToString());
}
}
不知道怎么回事,谁能帮帮我?
【问题讨论】: