问题标签 [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 投票
2 回答
1782 浏览

wcf - Thread.CurrentPrincipal 中的声明正在丢失,这些声明在 WCF 的 AfterReceiveRequest 中设置

我正在使用Microsoft.IdentityModel.dllSet & Get 中的声明WCF。我还实施MessageInspectors了设置索赔。因此,我正在ClaimsIdentity从客户端添加如下请求标头。

而服务端,

我正在尝试访问方法 implementation( OperationContract) 中 的声明值,AfterReceiveRequest如下所示。但索赔在 中不可用Thread.CurrentPrincipal

userIdClaim此处为空。

有任何想法吗?

0 投票
1 回答
3066 浏览

wcf - WCF AfterReceiveRequest 获取标头

我刚开始拦截对我的 WCF 服务的请求。

我正在使用如下所示的 java 代码调用 Web 服务(短版)

我正在接收请求,但无法获取/查找消息请求中的标头。我试过这样的事情:

但我总是以 -1 或异常结束。这样做的正确方法是什么?我在Java方面也做错了吗?

0 投票
1 回答
953 浏览

.net - WCF 消息拦截器配置问题

这个问题似乎已被多次询问,但我无法让它发挥作用。

首先,我现在在 Windows 7 和 Windows 8 上都使用 VS 2012 进行了尝试,并且遇到了完全相同的问题。

我正在尝试编写一个接收和处理 SOAP 标头消息的 WCF 服务,经过大量搜索发现我应该使用消息拦截器来读取和处理 SOAP 标头。

因此,我在本地计算机上创建了一个新网站,并将其命名为 DemoMessageInspector。在此解决方案中,我添加了以下类:

HmacVerificationBehavior

HmacVerificationConfigurationSection

HmacVerificationInspector

服务

和服务

Web.Config 文件如下:

因此,如果该行在 Web.Config 中被注释掉,我们就有了完美运行的示例代码。一旦取消注释,就会发生以下情况:

那么,问题基本上是应该如何配置?

或者问题是,这是用于完成从 WCF 端点读取 SOAP 标头这样简单任务的正确方法吗?

0 投票
2 回答
3908 浏览

c# - 如何使用 IDispatchMessageInspector 获取 WCF 合同操作的自定义属性值

问题是在 AfterReceiveRequest 如何使用 OperationDescription 找出操作上设置的自定义属性?如果有办法,在服务契约接口或服务实现类中的操作声明上设置自定义属性更好吗?

为了进一步说明问题:

或者

现在是 IDispatchMessageInspector:

0 投票
1 回答
889 浏览

c# - 如何在 WCF 服务的服务行为中获取请求消息的类型(如 request.GetType)

我正在编写一个自定义 ServiceBehavior,它希望我知道请求消息的类型,以推断消息是否用自定义属性装饰。

我的示例合同可能如下所示:

我试图通过使用来识别行为方面的自定义属性:

但是typeOfRequest总是作为{Name = "BufferedMessage" FullName = "System.ServiceModel.Channels.BufferedMessage"}

有没有办法可以通过使用请求来推断消息的类型?

注意:我直接引用了包含合同的程序集,并且服务不是通过 wsdl 引用的。

0 投票
0 回答
124 浏览

wcf - WCF IDispatchMessageInspector 将对象实例传递给服务上下文

在我的 WCF 服务中。我有 GetCustomerInfo 服务

我在 AfterReceiveRequest 方法中拦截 WCF 消息。在 AfterReceiveRequest 我正在创建一个 myClass 的对象实例,我想在 GetCustomerInfo 服务中使用它。

我不想使用静态类,数据可以异花授粉。

任何人都可以帮助我或建议我最好的方法来做到这一点。

0 投票
5 回答
20889 浏览

c# - 如何在 WCF 服务中使用 IDispatchMessageInspector?

我正在尝试在 WCF 服务实现中使用IDispatchMessageInspector来访问自定义标头值。

就像是:

我已经实现了自己的 IDispatchMessageInspector 类。

我如何通过

  • System.ServiceModel.Channels。留言

  • 系统.服务模型。客户端频道

从服务实现调用AfterReceiveRequest

编辑:

许多文章都喜欢this one or this one,举例说明如何实现你自己的ServiceBehavior。所以你的服务实现看起来像这样:

那么有了这个,我可以MyCustomBehavior在服务操作方法中以某种方式访问​​来访问自定义标头值吗?

0 投票
1 回答
2224 浏览

c# - RequestInterceptor 和 MessageInspector 有什么区别?

我在这里有两个疑问:-

1)两者的基本区别是什么Microsoft.ServiceModel.Web.RequestInterceptor and System.ServiceModel.Dispatcher.DispatchRuntime.MessageInspectors (IdispatchMessageInterceptor)

两者似乎都是请求/消息拦截器,可用于在请求管道中实现自定义验证/拦截器。

什么时候用一个对另一个?

RequestInterceptor2 )还有如何插入RouteTable.Routes.Add(new ServiceRoute())

我有这样的课-

和这样的路线定义:-

这是以下的定义MyServiceHostFactory: -

现在它抛出以下错误: -

The best overloaded method match for 'System.Collections.Generic.SynchronizedCollection<System.ServiceModel.Dispatcher.IDispatchMessageInspector>.Add(System.ServiceModel.Dispatcher.IDispatchMessageInspector)' has some invalid arguments

在这一行: -

我知道为什么,只是因为我试图在 MessageInspector 中连接 RequestInterceptor。两者都有不同的接口层次结构。

那么我应该在这里做什么?

编辑:

另请注意,我无法将 AuthenticationInterceptor 逻辑更改为不受我控制的代码。

0 投票
0 回答
107 浏览

c# - SSL 中断消息检查器(WCF 错误?)

我有一个执行这行代码的自定义消息检查器:

CreateBufferedCopy未启用安全性时工作正常,但在配置 SSL 时会引发 InvalidOperationException。该异常声称该Message request对象处于“已写入”状态。所有这些的配置都在这里:

这似乎是 WCF 本身的一个错误。也就是说,Message request参数不应(通过 SSL 功能?)处于“已写入”状态。想法?

如果相关,自定义绑定用于 SSL:

0 投票
2 回答
2454 浏览

c# - 使用 IDispatchMessageInspector 进行 WCF 服务日志记录

我正在尝试记录来自我的 WCF 服务的请求和响应。到目前为止我所做的是:

一切正常,但我有一个担忧:

AfterReceiveRequest并且BeforeSendReply必须同步工作,以便BeforeSendReply更新正确的记录。我想到的情况是同时从多个客户端调用服务,问题:

  • 不会lastLogId在多个请求和响应之间搞砸和洗牌吗?
  • 此日志记录特别更新BeforeSendReply会与多个客户端同时调用服务正常工作吗?如果是,那么请给我一个解释,以确保我的想法,如果不是,那么请为此提供更好的解决方案。