问题标签 [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.

0 投票
1 回答
833 浏览

c# - 使用 DelegatingHandler 包装 WebApi 响应

我正在尝试使用 aDelegatingHandler来包装我的 Web API 响应。我用这个作为例子。

在某些时候需要从响应对象中读取内容:

该解决方案不起作用,因为response.TryGetContentValue(out content)实际上并没有返回任何东西(或填充content变量)。

但是,如果我将代码“更改”为...

...它确实有效。

我希望这样TryGetContentValueContent.ReadAsAsync返回相同的值。为什么不是这样?

编辑:

在此处输入图像描述

0 投票
1 回答
1431 浏览

c# - HttpModule vs DelegatingHandler - 优点/缺点?

我正在尝试在 ASP.NET WebAPI 项目中记录整个传入请求和传出响应。虽然我同意DelegatingHandler,但我的雇主坚持使用HttpModule. 你会如何向她解释,为什么我们应该使用DelegatingHandler而不是HttpModule?还是我错了?

0 投票
1 回答
56 浏览

c# - SelfHost DelegatingHandler

我创建了自定义委托处理程序并覆盖它的方法

现在在那个方法中我运行自定义同步方法,你们能告诉我这个例子中哪个是正确的,或者如果两个都不正确,让我知道更好的用法,以避免任何死锁

1.

2.

我应该使用异步等待还是最好保持原样。

0 投票
0 回答
484 浏览

c# - 为什么 DelegatingHandler 不按路由触发?

我无法根据路由执行 WebAPI DelegatingHandler

关于 Web api 注册:

在 Web API 上:

如果我调用https://example.com/secure/data/abc => 它会显示 api 数据但从不调用 JwtCookieHandler。我做错了什么 ?

如果我将其设置为全局工作

0 投票
1 回答
3959 浏览

c# - 测试时 HttpClient.SendAsync 不使用 DelegatingHandler

我们的 C# 项目中有一些类可以调用 3rd 方 API。我们使用 HttpClient 对象进行调用。我们已经设置了我们的类,我们在其中执行这些调用以接受 HttpClient,以便在测试时,我们可以在客户端使用自定义/假 DelegatingHandler。

我们已经这样设置了我们的类:

ApiService如果未提供,则基类定义一个通用 HttpClient 对象。

我们目前正在使用 SendAsync,因此我们可以定义消息头。(我们的标题比此处列出的要多。)

测试定义 DelegatingHandler 如下:

接着:

当我们运行测试时,我们会收到以下消息:

处理程序没有返回响应消息。

而且我们似乎从来没有进入DelegatingHandler.SendAsync方法。

我们还有其他使用HttpClient.PostAsyncor调用 API 的类GetAsync,它们确实调用了该DelegatingHandler.SendAsync方法并按预期工作。

我们尝试过:


HttpClient httpClient = HttpClientFactory.Create(fakeResponseHandler);

我们还尝试Client.SendAsync了使用和不使用取消令牌。

为什么这不起作用?

我们应该重写这个来使用PostAsync吗?

0 投票
1 回答
319 浏览

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?

0 投票
1 回答
535 浏览

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 时有什么替代方案呢?

0 投票
1 回答
201 浏览

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)

0 投票
1 回答
93 浏览

c# - 每个请求错误处理策略

我正在尝试按照这个 2013 指南设置每个请求的错误处理策略。

  • 如果请求是本地的,则显示错误信息。
  • 如果当前用户在 IT 组中,则显示错误信息。
  • 对于其他所有人,不要显示错误。

我的代码:

它被注册为第一个处理程序:

我的 Web Api 托管在 Owin 上,但我没有看到相关的 Owin 代码,所以我省略了它。为了测试,我正在使用这个控制器:

在本地,我总是得到错误信息,并且延迟加载代码(由“CHECK USER”表示)永远不会执行,所以我不知道如何调试它。

部署到服务器,无论是否经过身份验证,我都不会收到任何错误信息。

我的 web.config 中没有自定义错误配置。

我做错了什么?

0 投票
0 回答
4232 浏览

c# - 使用 HttpClient 和自定义 DelegatingHandler 检查“未授权”请求

我目前正在使用DelegatingHandler来检查请求是否在发送到我们的 Web API 时变得未经授权。如果响应确实未经授权,我目前正在发送刷新令牌以重新登录用户,然后使用新的访问令牌更新以下请求。我遇到的问题是,许多调用是异步的,并且在其他调用完成之前继续,并且刷新令牌代码被多次命中导致多个刷新令牌被更新/保存。处理这种情况的最佳方法是什么?我当前的处理程序看起来像这样..

我不确定使用处理程序是最佳实践还是理想。我认为最好检查每个请求,以防访问令牌在调用过程中变得无效。使用刷新令牌时推荐的方法是什么?我还使用 DelegatingHandler 重试失败的请求 2 次,但身份验证处理程序是 HttpClient 管道中的最后一个处理程序。非常感谢任何建议!