问题标签 [idispatchmessageinspector]

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 回答
1672 浏览

wcf - VS2010“更新服务参考”到 WCF,其中行为扩展检查和更改消息

我正在使用加密时间戳来保护我的 Web 服务器中的 WCF 服务与“中间层”中的另一个服务之间的通信。在调用服务(此交换中的客户端)中,我使用一个 DLL,其类继承 System.ServiceModel.Configuration.BehaviorExtensionElement 以提供实现 System.ServiceModel.Description.IEndpointBehavior 和 System.ServiceModel.Dispatcher.IClientMessageInspector 的功能。这是通过 web.config 文件与部分粘合在一起的

然后将这些与中级 WCF 连接到类似这样的条目

在中间层有一个类似的故事,System.ServiceModel.Dispatcher.IClientMessageInspector 解密时间戳并处理请求或抛出带有错误消息“Invalid stamp”的 System.ServiceModel.FaultException。

这遵循http://msdn.microsoft.com/en-us/library/ms733747.aspxhttp://weblogs.asp.net/paolopia/archive/2007/08/23/writing-a-wcf的代码示例-message-inspector.aspx

现在我已经更改了中间层 WCF。一些更改很简单(例如更正方法名称“retrive”->“retrieve”中的拼写错误),而一些更改添加了更多实质性功能,我想更新客户端中的服务recerences。在 VS2010 中,我右键单击需要更新的服务引用并选择“更新服务引用”。VS2010连接中间层WCF(“正在下载服务信息”)然后抛出错误

由于以下问题,无法更新服务引用的配置:无法加载为扩展“MessageInspectorBehavior”注册的类型“MessageInspectorDLL.MessageInspectorExtensionElement、MessageInspectorDLL、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null”。(C:\TFS\Blah\Blah\web.config 第 80 行)

怎么了?是否需要为更新服务引用设置一些东西才能正确使用消息检查器 DLL?

尽管 DLL 或 web.config 可能存在看起来不太可能的错误,因为客户端将连接到 Azure 上的先前中间层,并且具有相同的加密时间戳检查。

0 投票
0 回答
420 浏览

asp.net - 如何使用 Unity 注入消息检查器?

我目前正在使用 Unity 作为 ASP MVC 3 应用程序的 DI 容器。由于我必须将一些功能公开为 Web 服务,因此我已经编写了一些 WCF 服务。这工作得很好。为了保护网络服务,我想使用消息检查器的概念。到目前为止,这也很有效,但现在我想将一些服务类的实例注入到消息检查器中,以便调用它的功能(例如检查凭据)。不幸的是,我真的不知道如何注入服务。

我已经阅读了 Unity.WCF 包,但不太确定这是否会从一开始就起作用,或者分别在哪里调整这种方法。

有谁知道如何做到这一点?

0 投票
1 回答
974 浏览

wcf - 将响应正文从 IDispatchMessageInspector 传递到 Application_EndRequest

我想记录通过我的 WCF REST 服务传输的请求参数和响应正文。我可以在 IDispatchMessageInspector 中访问完整的响应。在 Application_EndRequest 的操作过程中,我可以访问存储在 Context.Items 中的请求标头和其他项目。

在调试过程中,我看到操作通过 IDispatchMessageInspector 进行,然后通过 Application_EndRequest。我的想法是将响应存储在 IDispatchMessageInspector 中的某处,然后在 Application_EndRequest 中,我将检索响应并将其与其他请求参数一起记录。

所以我的问题是:我应该在哪里存储响应以便在 Application_EndRequest 中可以访问它?

0 投票
1 回答
608 浏览

wcf - 解释一下用 WCF 读取一个消息对象?

我有一个 MessageInspector 记录通过的消息?您只能阅读一次消息并且必须创建副本的原因是什么?我从 MSDN 中看到了我需要创建缓冲副本的文档,但我不知道为什么要这样实现?有人可以向我解释吗?

如果我无法访问服务器部分或无法更改 MessageInspector 以使用消息的缓冲副本,我可以修改上面的消息以制作流的副本吗?如果是这样,我将如何去做?

0 投票
2 回答
1639 浏览

c# - CreateBufferedCopy 是否将流位置留在最后?

AfterReceiveRequest方法中,如果我这样做:

以上是否将流的位置留在最后?基本上我要问的是在再次读取请求时创建缓冲副本会导致任何问题吗?

这就是我遇到这种情况的方式,在消息检查器中,我最初没有创建缓冲副本,但后来我遇到了错误消息,向服务发送请求并在线研究后,请求已经被读取,我发现我需要创建消息的副本,我只是想确保这不会导致位置或其他任何问题?

我想通过创建要在消息检查器中使用的副本,我不会两次阅读该消息,该副本被读取一次以进行日志记录,当它被分配给 ref 参数时,当我调用该服务时使用该副本, 正确的?

0 投票
1 回答
1091 浏览

wcf - 无法使 IDispatchMessageInspector 工作

我需要在 REST、Json、WCF Web 服务中使用请求标头。我创建了我的 IDispatchMessageInspector

然后一个端点行为将检查器附加到端点:

最后是 BehaviorExtensionElement :

这些类在同一个文件/命名空间 PDM.WebService 我的配置是:

一切都编译得很好,在执行时我可以捕捉到方法“public override Type BehaviorType”的执行,但之后没有其他代码方法被触发(我发送了请求并得到了响应,服务响应良好)。我在每个方法中都设置了调试点,没有其他方法执行!(尤其是 ApplyDispatchBehavior)。有人可以指出我缺少什么吗?

0 投票
1 回答
1687 浏览

wcf - wcf idispatchmessageinspector BeforeSendReply 未调用

我已经在我的服务中实现了 idispatchmessageinspector。我不想将此作为属性。我希望 BeforeSendReply 将其他数据添加到标题中。我遇到的问题是它没有被调用并且标头返回null。本质上,我将此视为事件驱动,每次方法完成执行时都会调用它。

有人可以解释BeforeSendReply的执行吗?

希望这是有道理的。

我想要完成的示例如下:

0 投票
1 回答
660 浏览

c# - 在 WCF IDispatchOperationSelector 中查找合同和操作

我已经定义了一个实现 IDispatchOperationSelector 的自定义 OperationSelector,以便我可以在执行该方法之前拦截来自客户端的消息。我这样做是为了检查消息中包含的公钥/私钥值,并在需要时抛出授权错误,而无需在我的服务中放置任何身份验证逻辑。

到目前为止,这一切都很好,但我想为每个服务操作指定一个 [AuthenticationType] 属性,我可以检查这个 OperationSelector。有没有我可以参考,或者在OperationSelector中找到对应的合同和操作?如果是这样,怎么做?

0 投票
1 回答
1997 浏览

c# - MessageInspector 和 Web 服务之间的共享信息

我有一个关于在 MessageInspector 和 Web 服务之间共享信息的问题。

我有一个标识符 (Guid),用于“绑定”AfterReceiveRequest 和 BeforeSendReply。它工作正常。但我希望这个标识符也可以在 Web 服务中使用的方法中使用。这对于跟踪日志中的问题非常有用。

下面是一个小的演示示例来说明这个想法。我的问题是找到一个解决方案,可以从 AfterReceiveRequest 方法访问返回对象。符合“MagicStuff”。

我将不胜感激任何帮助或提示。

0 投票
2 回答
1325 浏览

.net - 为具有属性的方法添加消息检查器

是否可以仅对某些应用了自定义属性的服务方法设置消息检查器?我在网上看到的所有示例都添加了一个消息检查器作为行为扩展,它应用于服务上的每个方法。