问题标签 [message-handlers]

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 投票
2 回答
1712 浏览

asp.net - 如何为在 ASP.NET WebAPI 2 中使用路由属性的特定控制器添加 MessageHandler?

是否可以仅为使用路由属性的特定控制器添加 MessageHandler?

如果它不包含某些标头,我想在管道中更早地切断请求。我想提一下:

  • 我无法在 WebApiConfig 中添加其他路由,我们必须使用控制器中的路由属性。

  • 我不想全局添加 MessageHandler 。

  • 它必须是一个 MessageHandler(在管道的早期)。我们有替代方案,但我们正在努力提高效率。

例如,我使用以下 RoutePrefix 装饰了控制器:api/myapicontroller 和一个使用 Route("") 的操作。(我知道这很奇怪,我们正在根据查询字符串选择不同的操作)

然后,我添加了

如果我在config.MapHttpAttributeRoutes();执行 myMessageHandler 之前放置此代码,但我收到此消息:

在与请求匹配的控制器“myapicontroller”上未找到任何操作

如果我把config.MapHttpAttributeRoutes();它放在第一位,那么 myMessageHandler 永远不会被执行,但 myapicontroller 中的 my 操作会被调用。

0 投票
2 回答
2751 浏览

asp.net - 无法从 ASP.NET Web API 中的 jQuery AJAX 请求中获取标头

我有一个托管在 Azure 上的 ASP.NET Web API。我已将 HTTP 消息处理程序集成到该 API。当我使用 AJAX 调用击中消息处理程序时,它会被击中。我还在我的 AJAX 调用中发送了一些请求标头。问题是我没有从 AJAX 调用发送到 Web API 中集成的消息处理程序的标头。参考图片:调试器截图

下面是我的 AJAX 请求的代码:

Web API 中的消息处理程序如下所示:

当我从我的 IIS 本地主机运行代码时,发送的请求如下所示:

我在控制台中得到的响应是:

使用 POSTMAN 客户端,请求工作正常,但从本地主机返回错误。请让我知道在我的消息处理程序中没有获取标题的原因?

0 投票
1 回答
286 浏览

c# - 在消息处理程序中使用 rebus TransactionContext

我正在尝试在我的消息处理程序中使用 Rebus 事务上下文。我已阅读此处的文档并在此处查看示例,但是我不知道 Windsor 是如何工作的。

有人可以举一个在没有任何 IOC 容器的情况下将 ITransactionContext 与 EF 一起使用的示例,以了解它的工作方式吗?

谢谢

0 投票
2 回答
879 浏览

asp.net-mvc - 特定于路由的 ASP.NET MVC Web API 消息处理程序不调用控制器操作

我有一个 ASP.NET MVC Web API 控制器:

我创建了一个自定义消息处理程序:

WebConfigApi.cs我将消息处理程序路由特定于控制器操作方法:

当我发布到控制器操作方法时,例如:

http://hostname/api/updatestuff/post?stuffid=12345

消息处理程序按预期拦截请求。但是在单步执行中:

var response = await base.SendAsync(request, cancellationToken);

控制器操作方法永远不会被击中。

作为测试,我删除了特定于路由的布线并使消息处理程序全局化:

configuration.MessageHandlers.Add(new MyMessageHandler());

SendAsync正确调用我的控制器的操作方法。

所以我的想法是路线定义有问题。但是,消息处理程序通过特定于路由的接线调用的,并且Route Debugger显示当我 POST 到我的控制器 ( ) 时,正在http://hostname/api/updatestuff/post?stuffid=12345使用该路由。

当我以特定于路由的方式连接消息处理程序时,为什么没有调用我的操作方法?

0 投票
1 回答
231 浏览

c# - 部署后 NServiceBus 反序列化异常

我目前正在使用 NServiceBus6。我成功地从我的 web api 向托管 Windows 服务的端点提交了一条消息。在我的本地机器上的开发环境中一切正常。我在所有端点配置中都使用“NewtonsoftSerializer”。我现在已将我的解决方案部署到服务器。我的服务现在托管为窗口服务,而不是控制台应用程序。Service Insight 现在报告 NServiceBusDeserialization 异常:

尝试从传输消息 8221d498-81ca-406e-8ab6-a77701065f1f 提取逻辑消息时出错 ---> System.Xml.XmlException:根级别的数据无效。第 1 行,位置 1。

有几个项目突出。A. 我没有使用 XmlSerialization。B. 我在开发环境中没有序列化问题。我将不胜感激提供的任何帮助,谢谢。

留言类:

搜索请求:

搜索请求简单:

资源:Azure DocumentDbResource 类

0 投票
0 回答
586 浏览

c# - 将消息处理程序应用于特定的 webapi 控制器

我只需要在 webapi.config 文件中为特定控制器指定 MessageHandler。

所以,我在 webapiconfig.cs 文件中有如下代码。

我希望像http://hostname/api/Reports/GetSomeList这样的所有请求都通过 MessageHandler 即在 ReportController.cs 文件中编写的 api,所有其他请求都跳过这个 MessageHandler。

我的问题是,控制不在 /api/Reports/ 请求的 MessageHandler 内部。

0 投票
1 回答
710 浏览

c# - 委托处理程序的 SendAsync 方法引发 System.Format 异常

在使用自定义消息处理程序时,我一直在 API 服务器端遇到以下错误:

API 控制器:-

自定义消息处理程序:-

当我调用操作方法http://localhos:4200/errors/adf(传递字符串参数而不是整数)时,我在 Base.SendAsync 方法中得到了 System.FormatException。引发异常:mscorlib.dll 中的“System.FormatException”附加信息:输入字符串的格式不正确。

但是这个异常不是由 GlobalException Handler 处理的。

看起来 base.SendAsync 方法已经吞下了这个异常。我们如何处理这个异常并重新抛出,以便 GlobalException 处理程序可以用正确的消息处理这个异常。

先感谢您。

0 投票
1 回答
456 浏览

java - Handler 不应该直接实现 javax.xml.ws.handler.Handler 接口

在此之前,我SOAPHandler< SOAPMessageContext >用于处理来自 web 服务的数据。代码如下:

我试着用谷歌搜索它并从这个链接中读到一些东西: JAX-WS SoapHandler with large messages: OutOfMemoryError

根据我的理解, userMessageHandlerContext优于SOAPMessageContext,因此我试图将其更改为:

但是,当我运行它时,我点击了:

原因:javax.xml.ws.soap.SOAPFaultException:com.mybill.ws.camel.MyBillSoapMessageHandler 处理程序不应直接实现 javax.xml.ws.handler.Handler 接口。

我不确定为什么会收到此错误。由于我的服务器未使用而发生这种情况有什么原因MessageHandlerContext吗?

好心提醒。

0 投票
0 回答
286 浏览

c# - c# HttpClient MessageHandler 随机禁止

我有一个程序使用 HttpClient 进行 API 调用并覆盖 DelegatingHandler 类以在失败时重试请求,如下所示。

该程序适用于 API 的成功响应。在 500 个请求中,有 2-3 个请求因 Forbidden 403 而失败。不成功的 API 调用是随机的。API 服务器中的日志显示失败的请求没有凭据。

有人知道随机失败的原因吗?如何检查是否在每个请求中都发送了 Credentails?

0 投票
0 回答
747 浏览

java - Spring MappingJackson2HttpMessageConverter 没有被触发?

我有一个相当老的 Java 8 / Spring 应用程序,它提供了一个 REST API。响应以 JSON 或 XML 格式发送,具体取决于 Accept Header。

所以例如

  • application/json-v1 将响应转换为响应对象版本 1 的 JSON
  • application/json-v2 - 将响应转换为响应对象版本 1 的 JSON
  • application/xml-v1 - 将响应转换为响应对象版本 1 的 XML

该应用程序现在在 Spring 5 中,但最初是在 Spring3 中,并且这方面从未转换为使用代码配置。

所以核心配置 XML 有这个

控制器具有沿着这些线设置的生产属性

JSON处理程序的主要覆盖类是沿着这些线......

所以设置了场景。XML 版本运行良好。

基本配置似乎适用于 JSON 消息处理程序,就好像我将配置的 Mime 类型放在标头中一样,它会返回 JSON 文档,但如果我放置不存在的版本,则会引发错误。

但是 writeInternal 方法永远不会被调用,因此永远不会到达任何版本更改代码。我从几个角度看了这个,我不知道为什么。笨拙的 Init 1、init2 打印语句将输出到控制台。我确信它曾经可以工作,但我现在看不出有什么不同,而且因为它都是在 Spring 中连接的,所以除了查看错误代码之外,我不知道如何进一步调查!

如果有人知道问题可能是什么,那就太好了,尽管目前我不确定如何以及在哪里进行调查,因为a)代码肯定曾经工作过,b)我在配置中看不到任何错误已经改变。我想知道这是否是我当时没有注意到的依赖关系的变化?