首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >HttpClient在某些请求中失败

HttpClient在某些请求中失败
EN

Stack Overflow用户
提问于 2015-07-09 22:11:03
回答 2查看 2.4K关注 0票数 0

我可以向web服务发出一些请求,它们可以正常工作,但是这个请求会返回错误消息。

  • “发生一个或多个错误”
  • “基础连接已关闭:接收时发生意外错误。”
  • “无法从传输连接读取数据:现有连接被远程主机强制关闭。”

我已经调试了web服务,它返回正确的JSON。

下面是我用来调用web服务的代码。我尝试过异步/等待,但这并没有什么区别。

代码语言:javascript
复制
 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的代码位

代码语言:javascript
复制
   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服务的调用如下。

代码语言:javascript
复制
  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;

                }
            }
        }
    }

有人知道为什么会发生这种事吗?

EN

Stack Overflow用户

发布于 2015-07-09 22:19:11

如果抛出的是一个AggregateExeption,那么它几乎肯定是在以下几个方面引起的:

代码语言:javascript
复制
HttpClient.PostAsync(uri, content).Result;

或者:

代码语言:javascript
复制
response.Content.ReadAsStringAsync().Result.ToString();

我这样说,就像我的经验一样,AggregateExceptions通常是在任务中提出的。

在不知道您要发布什么以及您想要发布的API的情况下,我不能说具体的错误是什么。我的第一个检查是,在导致错误的请求中,没有错误或其他此类错误。然后,我将检查是否有任何对包含保留关键字,因为这也可能是一个问题。

不是解决办法,但希望能有所帮助。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31329138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档