问题标签 [dotnet-httpclient]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
49114 浏览

c# - Web Api + HttpClient:异步模块或处理程序已完成,而异步操作仍处于挂起状态

我正在编写一个使用 ASP.NET Web API 代理一些 HTTP 请求的应用程序,并且我正在努力确定间歇性错误的来源。这似乎是一种竞争条件......但我并不完全确定。

在我详细介绍之前,这里是应用程序的一般通信流程:

  • 客户端向代理 1发出 HTTP 请求。
  • 代理 1将 HTTP 请求的内容中继到代理 2
  • 代理 2将 HTTP 请求的内容中继到目标 Web 应用程序
  • 目标 Web 应用程序响应 HTTP 请求并将响应流式传输(分块传输)到代理 2
  • 代理 2将响应返回给代理 1,代理 1 又响应原始调用Client

代理应用程序是使用 .NET 4.5 在 ASP.NET Web API RTM 中编写的。执行中继的代码如下所示:

间歇性发生的错误是:

异步模块或处理程序已完成,而异步操作仍处于挂起状态。

此错误通常发生在对代理应用程序的前几个请求中,之后该错误不再出现。

抛出时,Visual Studio 永远不会捕获异常。但是可以在 Global.asax Application_Error 事件中捕获错误。不幸的是,异常没有堆栈跟踪。

代理应用程序托管在 Azure Web 角色中。

任何帮助确定罪魁祸首将不胜感激。

0 投票
1 回答
1599 浏览

windows-runtime - 具有多个值的 WinRT HttpClient 标头授权

我需要为 Amazon SQS 设置 Authorization 标头,但它需要多个值。

设置标题时,我抛出异常:

System.FormatException:无法添加值,因为标头“授权”不支持多个值。

如何使用逗号分隔的多个值设置标题。

0 投票
5 回答
456107 浏览

c# - .NET HttpClient。如何发布字符串值?

如何使用 C# 和 HttpClient 创建以下 POST 请求: 用户代理:提琴手内容类型:application/x-www-form-urlencoded 主机:localhost:6740 内容长度:6

我的 WEB API 服务需要这样的请求:

0 投票
1 回答
823 浏览

c# - 在 WinRT 中将超时附加到异步请求

我正在使用这段代码将 TimeOut 附加到我正在发出的请求调用中,以确保我们不会遇到缓慢的互联网连接 - 并且处理得当。
当我满足超时条件时,我收到一条错误消息,我无法在扩展函数中修复。

一般如何完成这项任务?

代码:

用法:

我处理AggregateException这个(并通过 a WebException),但它仍然AggregateException在超时失败时生成。

0 投票
2 回答
14240 浏览

c# - 在 WinRT 的 HttpClient 类中使用 Keep-Alive 连接?

打开与我们服务器的连接时,我们的 WinRT 应用程序非常慢。请求需要大约 500 毫秒才能运行。这阻碍了我们的一些场景。

在调试时,我们注意到当 Fiddler 处于活动状态时,请求要快得多 - 每个请求约 100 毫秒。后来通过一些搜索我们了解到这是因为 Fiddler 在代理调用时使用了 Keep-Alive 连接,这使得我们的代理调用更快。

我们以两种方式仔细检查了这一点。

  1. 我们将 UseProxy 设置为 false 并观察到请求变慢了。
  2. 我们关闭了 Fiddler 的“重用连接”选项,并观察到请求又变慢了。

我们尝试通过 Connection 标头 (.Connection.Add("Keep-Alive")) 启用 keep-alive,但这似乎没有任何效果 - 事实上,标头似乎被 .NET 组件公然忽略并且是未按请求发送(再次通过 Fiddler 检查)。

有谁知道如何在 Windows 8、WinRT、HttpClient 类中设置保持活动状态?

0 投票
1 回答
5577 浏览

c# - HttpClient请求头自定义

是否可以在 .Net/Web Api 中设置 HttpClient 的请求 ACCEPT 标头以包含“application/json;odata=verbose”?

我知道如何设置请求媒体类型

但是如何设置 odata=verbose 部分?我似乎无法在网上找到任何解决方案来做到这一点。

我必须改用 HttpWebRequest 吗?基本上我需要调用 sharepoint 2013 rest api,并且需要 odata=verbose 部分。

0 投票
3 回答
7107 浏览

asp.net-web-api - 如何使用 HttpClient.PostAsJsonAsync 方法将多个参数传递给 WebAPI 操作?

我有一个 Web API 操作如下:

我需要使用 HttpClient 调用它,我正在尝试如下:

分页信息需要传递给 get 方法。

其中 OrderDirection 是一个枚举:

但是,它不起作用。它说内部服务器错误,我在这里缺少什么;枚举是导致问题还是其他原因?我有其他 WebAPI 工作得很好;它们都没有一个以上这样的参数。

这是我的 routConfig:

使用多个参数调用WebAPI是正确的方法还是有更好的方法,请建议?

EDIT-1: 改变了这个:

至:

只是一个错字:)

编辑-2:

使用 EDIT-1 请求转到以下 WebAPI 方法(这是错误的):

但是,当我将 routeConfig 编辑为以下内容时:

然后我开始收到以下异常:

0 投票
2 回答
12478 浏览

c# - 将 HttpClient 设置为太短的超时会导致进程崩溃

我注意到,当我使用System.Net.HttpClient短暂的超时时,它有时可能会使进程崩溃,即使它被包装在 try-catch 块中。这是一个重现这一点的简短程序。

运行此程序将使进程崩溃,但出现以下异常:

稍微深入一点,似乎在创建HttpClient相关项之前中止请求时ServicePointHttpWebRequest尝试创建ServicePoint, via ServicePointManager.FindServicePoint,这会引发 RequestCanceled。由于这个异常是在试图取消请求的线程中抛出的,所以它没有被捕获,并且进程死亡。

我错过了什么吗?你遇到过这个问题吗?

0 投票
2 回答
14305 浏览

c# - 在内容 100% 完成之前从 HttpResponseMessage 读取标头

  1. 在整个响应流回之前,如何访问响应标头?
  2. 我如何在流到达时读取它?
  3. HttpClient 是我对接收 http 响应进行精细控制的最佳选择吗?

这是一个可以说明我的问题的片段:


编辑为我澄清另一个灰色区域:
我发现的任何参考都有某种阻塞语句,这将导致等待内容到达。我阅读的引用通常访问 streamTask.Result 或 Content 上的方法或属性,并且我不知道哪些引用是可以的,因为 streamTask 正在进行,哪些将导致等待直到任务完成。

0 投票
1 回答
2582 浏览

c#-4.0 - 将图像发布到 Windows Phone 8 中的 Web 服务器

我有一个运行良好的 Windows 8 应用程序,现在我想为 Windows Phone 8 编写相同的应用程序,但我只得到一个黑色图像而不是正确的图像。

这是我上传图片文件的代码

这是将我的图像转换为字节数组的代码

有人知道为什么我只得到黑色图像而不是正确的图像吗?图像由 PhotoChooseTask 选择。