我可以向web服务发出一些请求,它们可以正常工作,但是这个请求会返回错误消息。
我已经调试了web服务,它返回正确的JSON。
下面是我用来调用web服务的代码。我尝试过异步/等待,但这并没有什么区别。
public static string PostURL(string uri, List<KeyValuePair<string, string>> pairs)
{
try
{
var content = new FormUrlEncodedContent(pairs);
var httpClient = new HttpClient();
var response = httpClient.PostAsync(uri, content).Result;
if (response.IsSuccessStatusCode)
return response.Content.ReadAsStringAsync().Result.ToString();
else
return "Failed";
}
catch(AggregateException e)
{
return e.Message;
}
}
这是调用HttpClient Post的代码位
public ActionResult JobDetails()
{
var response = WebServicePost.PostURL(WebServicePost.Uri + "JobService.svc/GetJob/", new List<KeyValuePair<String, String>>
{
new KeyValuePair<string, string>("JobID", "46"),
new KeyValuePair<string, string>("CompanyCode", System.Web.HttpContext.Current.Request.Cookies["CompanyCode"].Value)
});
List<Job> list = (List<Job>)JsonConvert.DeserializeObject(response.ToString(), typeof(List<Job>));
return View(list);
}
这将填充前端的a DataTable。
对web服务的调用如下。
public List<Job> GetJob(Stream streamData)
{
dynamic jObject = streamReader.ConvertToDynamicJsonObject(streamData);
int jobID = int.Parse(jObject["JobID"]);
using (var session = NHibernateHelper.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
try
{
var query = session.QueryOver<Job>().Where(x => x.JobID == jobID).List();
return query.ToList();
}
catch (Exception e)
{
Logger.log("Exception at GetJob", e.Message);
return null;
}
}
}
}
有人知道为什么会发生这种事吗?
发布于 2015-07-09 22:19:11
如果抛出的是一个AggregateExeption,那么它几乎肯定是在以下几个方面引起的:
HttpClient.PostAsync(uri, content).Result;
或者:
response.Content.ReadAsStringAsync().Result.ToString();
我这样说,就像我的经验一样,AggregateExceptions通常是在任务中提出的。
在不知道您要发布什么以及您想要发布的API的情况下,我不能说具体的错误是什么。我的第一个检查是,在导致错误的请求中,没有错误或其他此类错误。然后,我将检查是否有任何对包含保留关键字,因为这也可能是一个问题。
不是解决办法,但希望能有所帮助。
https://stackoverflow.com/questions/31329138
复制相似问题