问题标签 [delegatinghandler]
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.
c# - 使用 DelegatingHandler 包装 WebApi 响应
我正在尝试使用 aDelegatingHandler
来包装我的 Web API 响应。我用这个作为例子。
在某些时候需要从响应对象中读取内容:
该解决方案不起作用,因为response.TryGetContentValue(out content)
实际上并没有返回任何东西(或填充content
变量)。
但是,如果我将代码“更改”为...
...它确实有效。
我希望这样TryGetContentValue
并Content.ReadAsAsync
返回相同的值。为什么不是这样?
编辑:
c# - HttpModule vs DelegatingHandler - 优点/缺点?
我正在尝试在 ASP.NET WebAPI 项目中记录整个传入请求和传出响应。虽然我同意DelegatingHandler
,但我的雇主坚持使用HttpModule
. 你会如何向她解释,为什么我们应该使用DelegatingHandler
而不是HttpModule
?还是我错了?
c# - SelfHost DelegatingHandler
我创建了自定义委托处理程序并覆盖它的方法
现在在那个方法中我运行自定义同步方法,你们能告诉我这个例子中哪个是正确的,或者如果两个都不正确,让我知道更好的用法,以避免任何死锁
1.
2.
我应该使用异步等待还是最好保持原样。
c# - 为什么 DelegatingHandler 不按路由触发?
我无法根据路由执行 WebAPI DelegatingHandler
关于 Web api 注册:
在 Web API 上:
如果我调用https://example.com/secure/data/abc => 它会显示 api 数据但从不调用 JwtCookieHandler。我做错了什么 ?
如果我将其设置为全局工作
c# - 测试时 HttpClient.SendAsync 不使用 DelegatingHandler
我们的 C# 项目中有一些类可以调用 3rd 方 API。我们使用 HttpClient 对象进行调用。我们已经设置了我们的类,我们在其中执行这些调用以接受 HttpClient,以便在测试时,我们可以在客户端使用自定义/假 DelegatingHandler。
我们已经这样设置了我们的类:
ApiService
如果未提供,则基类定义一个通用 HttpClient 对象。
我们目前正在使用 SendAsync,因此我们可以定义消息头。(我们的标题比此处列出的要多。)
测试定义 DelegatingHandler 如下:
接着:
当我们运行测试时,我们会收到以下消息:
处理程序没有返回响应消息。
而且我们似乎从来没有进入DelegatingHandler.SendAsync
方法。
我们还有其他使用HttpClient.PostAsync
or调用 API 的类GetAsync
,它们确实调用了该DelegatingHandler.SendAsync
方法并按预期工作。
我们尝试过:
和
HttpClient httpClient = HttpClientFactory.Create(fakeResponseHandler);
我们还尝试Client.SendAsync
了使用和不使用取消令牌。
为什么这不起作用?
我们应该重写这个来使用PostAsync
吗?
c# - Content is missing for some 404 responses
I'm trying to return custom error responses from web.api. Let it be simple string "Oops!"
formatted as json. So I created simple delegating handler which replaces error responses like this:
Next I make sure that this is the only one message handler in pipeline:
Controller is also simplest one:
And here goes interesting:
/api/values/42
gives me 200 response with value string/api/values/13
gives me 404 response with my custom"Oops!"
string/api/values/42/missing
gives me empty 404 response
The last case is my problem. When I set a breakpoint on the last line of delegating handler I clearly see that errorResponse
contains ObjectContent<string>
with the correct value. But why this value is cleared away later?
asp.net-web-api - 用于预请求的 Web Api 处理程序
我正在使用 Web Api 2.0 的委托处理程序来拦截我所有的 Web Api 调用,我需要在执行操作之前采取行动。
我按照 Microsoft Docs 中的说明实现了代码,如下所示:
并注册处理程序:
但是这段代码是在控制器方法之后执行的,这不是我需要的。我想在之前执行处理程序,就像我在旧的 MVC 操作过滤器的pre-execute方法上做的那样。
注意 我没有使用动作过滤器,因为在 Microsfot Docs 上他们说停止使用 Web Api 2.0 的动作过滤器,因为它们将被弃用。那么,在使用 Web Api 时有什么替代方案呢?
c# - WebAPI - 404 未找到 (MapHttpRoute)
我正在尝试使用 ASP.NET WebAPI 调用以“webapi/v1”开头的 ASP.NET Core API:我正在使用自定义 DelegatingHandler 来处理“webapi/v1 ...”请求并调用 API 但只有这些 URL 有效:
/webapi/v1/current -> 好的
/webapi/v1/users/plant/{plantId}?PageSize=10&PageIndex=1 -> OK
/webapi/v1/plants/{plantId}/user/{userId}/app/{appId}/{role} -> KO
我的 WebapiConfig.cs 目前包含以下代码:
我是否被迫添加一个新的“config.Routes.MapHttpRoute”来处理“复杂”的路线?是否可以映射以 "webapi/v1" 开头的路线?
我试图做的是通过添加config.MessageHandlers.Add(handler);全局注册自定义 DelegatingHandler 然后在其中编写一些代码以忽略不以我的模式开头但不成功的请求(404.0 Not Found)
c# - 每个请求错误处理策略
我正在尝试按照这个 2013 指南设置每个请求的错误处理策略。
- 如果请求是本地的,则显示错误信息。
- 如果当前用户在 IT 组中,则显示错误信息。
- 对于其他所有人,不要显示错误。
我的代码:
它被注册为第一个处理程序:
我的 Web Api 托管在 Owin 上,但我没有看到相关的 Owin 代码,所以我省略了它。为了测试,我正在使用这个控制器:
在本地,我总是得到错误信息,并且延迟加载代码(由“CHECK USER”表示)永远不会执行,所以我不知道如何调试它。
部署到服务器,无论是否经过身份验证,我都不会收到任何错误信息。
我的 web.config 中没有自定义错误配置。
我做错了什么?
c# - 使用 HttpClient 和自定义 DelegatingHandler 检查“未授权”请求
我目前正在使用DelegatingHandler来检查请求是否在发送到我们的 Web API 时变得未经授权。如果响应确实未经授权,我目前正在发送刷新令牌以重新登录用户,然后使用新的访问令牌更新以下请求。我遇到的问题是,许多调用是异步的,并且在其他调用完成之前继续,并且刷新令牌代码被多次命中导致多个刷新令牌被更新/保存。处理这种情况的最佳方法是什么?我当前的处理程序看起来像这样..
我不确定使用处理程序是最佳实践还是理想。我认为最好检查每个请求,以防访问令牌在调用过程中变得无效。使用刷新令牌时推荐的方法是什么?我还使用 DelegatingHandler 重试失败的请求 2 次,但身份验证处理程序是 HttpClient 管道中的最后一个处理程序。非常感谢任何建议!