问题标签 [servicebehavior]

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

wcf - 排除一个特定终结点的 WCF ServiceBehaviorExtension

我想排除自定义行为扩展,它需要我的一项服务的自定义标头。可能吗?我阅读了有关 RemoveBehaviorExtension 元素的信息,但没有提及在何处使用它。

任何帮助表示赞赏!谢谢!

0 投票
1 回答
1663 浏览

wcf - ServiceBehaviour 的命名空间对于 Web 服务版本控制是否重要?

很简单,因为...ServiceBehaviour的命名空间对于 Web 服务版本控制很重要吗?这意味着对于客户端与服务器的向前/向后兼容性,这个命名空间是否以任何方式涉及?

我真的不明白这个特定的命名空间是什么以及它的用途。有人可以启发我吗?

谢谢!

EDIT1:经过我的调查,这个名称空间出现在第一行的 WSDL 中:<wsdl:definitions name="SvcTest" targetNamespace="api.company.com/Services/Tester">...但我不知道这是否会影响版本控制...也许我是盲人或错过了什么。或者也许我太担心了......为什么我要在这里添加一些日期(<wsdl:definitions name="SvcTest" targetNamespace="api.company.com/Services/Tester/2012/01">)?

EDIT2:我找到了这个链接,但指向另一个不再可用的位置:http: //social.msdn.microsoft.com/Forums/en/wcf/thread/66c19783-6675-4bd7-83c1-2140d00a943e。有人可以帮忙吗?

0 投票
1 回答
351 浏览

wcf - 如何从 WCF 数据协定对象中获取数据到消息头中

我服务中的所有数据合同对象都继承自 BaseMessage...

我熟悉使用 Message Inspectors 查看通过网络传输的实际 SOAP 有效负载。但是,我想要做的是以某种方式连接到消息管道以执行以下操作:

  1. 查看传入消息并从中读出 MessageId 字段,最好不要搜索整个字符串消息对象以查找字符串匹配 - 除非有快速的方法来执行此操作。

  2. 从消息中提取 MessageId,以便在包含 MessageId 的消息内创建一个标头。同样,我真的不想在整个消息中搜索字符串匹配。

我熟悉使用 IClientMessageInspector 和 IDispatchMessageInspector 查看消息,但我认为在管道中的这一点上,我无法访问实际对象来访问其字段。

谢谢

0 投票
1 回答
1412 浏览

wcf - 指定 ServiceBehavior 和 EndpointBehavior 的语法?

查看http://msdn.microsoft.com/en-us/library/ms731303.aspxhttp://msdn.microsoft.com/en-us/library/ms789007.aspx,给出了指定 ServiceBehavior 的示例,但是有没有办法在 behaviorConfiguration 中指定一个端点行为?就像是

0 投票
2 回答
825 浏览

wcf - WCF 服务行为向我的服务添加操作

我想创建一个服务行为,为我的服务添加额外的服务操作。通过这种方式,我可以将行为添加到我的任何服务(现有的和未来的)中,并且我的服务都能够执行这个额外的服务操作。(例如 ping 或返回一些其他服务信息)

我不确定在这里做什么来实现我想要的,到目前为止我试图做的是实现一个试图修改服务描述的服务行为。我应该添加一个端点,然后在其上指定一个新合同吗?

0 投票
1 回答
578 浏览

asp.net-mvc - 如何将从 DispatchMessageInspector 中的消息头获取的信息传递给 ServiceContract?

我正在尝试将用户信息从控制器传递到服务层。

IClientMessageInspectors并且IDispatchMessageInspectors似乎是最有可能的解决方案。

在完成了构建 HTTP 用户代理消息检查器编写 WCF 消息检查器之后,我对如何将信息添加到消息头以及如何读取它有了一个很好的了解。

我想不通的是:

如何获取用户信息IClientMessageInspector

在我曾经起诉过的控制器内部User.Identity.Name。但 User 对象在消息检查器中不可用。在消息检查器中获取此信息的一种方法是将其传递到构造函数中,但我从未显式创建 MessageInspector 对象,因此如何在其构造函数中传递用户信息。

编辑:我找到了第一个问题的答案。用户信息可以通过 System.Threading.Thread.CurrentPrincipal.Identity.Name 获取。仍然坚持第二部分。

如何在服务方法中提供用户信息?

我可以浏览标头并从 DispatchMessageInspector 中的消息标头中获取用户信息,但是如何在我的操作合同中提供这些信息?

0 投票
1 回答
5054 浏览

wcf - 每个端点的不同服务行为

情况

我们正在对某些 WCF 服务实施不同类型的安全性。ClientCertificate、用户名和密码以及匿名。

我们有 2 个 ServiceBehaviorConfiguration,一个用于 httpBinding,一个用于 wsHttpBinding。(我们有基于声明的安全性的自定义授权策略)作为一项要求,我们需要为每个服务提供不同的端点。3 个带有 httpBinding 的端点和 1 个带有 wsHttpBinding 的端点。

一项服务的示例:

  • basicHttpBinding : 匿名
  • basicHttpBinding : 用户名和密码
  • 基本HttpBinding : BasicSsl
  • wsHttpBinding : BasicSsl

注意:我们正在开发 .NET 3.5

问题

第 1 部分:我们不能两次指定同一个服务,一次使用 http 服务配置,一次使用 wsHttp 服务配置。

第 2 部分:我们无法在端点上指定服务行为。(抛出和异常,未找到端点行为......服务行为不能设置为端点行为)

配置

第 1 部分:

服务行为配置:

我们如何在 WsHttpBinding 端点上指定不同的服务行为?或者我们如何以不同的方式将我们的授权策略应用于 wsHttpBinding 和 basicHttpBinding。我们将使用端点行为,但我们不能在端点行为上指定我们的授权策略

0 投票
1 回答
107 浏览

wcf - 有没有办法强制 IIS 调用 CustomServiceHost?

全部,

我开发了一个 WCF Web 服务并将其托管在 IIS7.5 中。服务行为是 instanceContextMode=InstanceContextMode.PerSession,因此 IIS 在第一个请求期间创建一个服务实例,并创建与请求数量一样多的实例。

但是需要在调用服务之前预先缓存一些应用程序数据,即类似于静态初始化。

我不想打扰服务行为属性,但想实现静态初始化。

我确实尝试使用 CustomServiceFactory 并自己承担创建服务工厂实例的工作。但看起来 IIS 也会在第一次请求期间创建服务工厂,或者我不确定这部分。

那么,我想知道当应用程序部署在 IIS 中或在 IIS 重启期间如何创建服务实例/服务工厂实例?

任何帮助深表感谢!

0 投票
1 回答
1374 浏览

wcf - WCF REST 的服务行为

我在为我的 WCF 服务配置 ServiceBehavior 时遇到问题。

一些背景。基本上我正在开发一个应该在 IIS 上运行的 REST 服务 WCF。我需要能够记录服务抛出的异常(我正在使用 log4net)并根据异常类型返回 HTTP 状态代码。我希望我的服务实现对 WCF 相关的东西有最少的了解,所以我不想在服务中的任何地方都将异常转换为 FaultException。所以我发现将我自己的 IErrorHandler 添加到服务主机将是最好的方法。

然而,我的问题是,无论我尝试什么,我似乎都无法在 Web.config 中获得我的自定义 ServiceBehavior 的配置。这是相关的代码。

网络配置。

错误扩展元素。

错误服务行为。

ExceptionModule 实现 IErrorHandler 的地方。

0 投票
2 回答
2425 浏览

.net - WCF 中的默认 InstanceContextMode

在WCF中,如果我们不具体指定ServiceBehaviour的InstanceContextMode,那么下面的默认模式是什么?

  1. 每次通话
  2. 每会话
  3. 单身的

谢谢。