问题标签 [wcf-behaviour]

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 投票
0 回答
565 浏览

wcf - 如何使用具有消息级安全性的 netTcpBinding?

我正在将我的 WSE3 服务迁移到 WCF 平台。客户端将是旧版 WSE3 客户端。

为了实现一些要求,我创建了自定义服务行为。服务行为的配置 (in web.config) 包含该serviceCertificate元素。

使用设置将此行为应用于我的服务behaviorConfiguration。现在我想从托管在同一个 IIS 7.5 中的另一个 WCF 服务调用一个 WCF 服务。所以我添加了netTcpBinding(和 netNamedPipeBinding 太)。当我从任何 WCF 服务调用另一个服务的 OperationContract 时,它曾经给我Access is denied.错误。我删除了behaviorConfiguration服务的设置,然后netTcpBinding(和 netNamedPipeBinding)开始工作。

配置如下:


web.config中的服务行为配置为:

的绑定配置netTcpBinding如下:

我想知道,

  1. 在这种情况下如何使用 netTcpBinding?
  2. 我可以对同一个服务使用两种不同的行为吗?如果是,如何?
  3. 如果不是,在这种情况下如何实现命名管道绑定?
  4. 为什么服务器证书相关的东西会导致Access is denied错误?没有内在的例外;刚刚接受了拒绝消息!
0 投票
1 回答
435 浏览

c# - 在 WCF 中,您可以重用端点行为、服务行为和绑定吗?

在 WCF 中,您可以重用端点行为、服务行为和绑定吗?或者每个服务/端点必须有不同的,即使它们除了它们的 ID 是相同的。

0 投票
2 回答
665 浏览

c# - 在 WCF 操作中修改返回值

我想确保在 WCF 中返回数据集的所有操作都在 Property SchemaSerializationMode 中设置了 .ExcludedSchema 值。

我可以用 CustomBehavior 做到这一点吗?我试图实现一个 CustomDispatchBehavior 并添加一个 MessageInspector,但是 AfterReceiveRequest 和 BeforeSendReply 方法不允许我对返回值做任何事情。在 BeforeSendreply 中,返回值已经被序列化了。我在哪里可以插入我的代码?

0 投票
1 回答
782 浏览

wcf - WCF REST 中的操作过滤器之类的东西?

我正在寻找类似AuthorizeAttributeMVC 中的东西,我可以这样使用:

WcfAuthorizeAttribute将尝试使用 FormsAuthentication 对用户进行身份验证,并设置上下文的 IPrincipal,或者返回 HTTP 401 Unauthorized。

我尝试过使用 a IOperationBehavior,但我在第一种方法中执行,无论是哪种方法,而不是在我设置属性的方法中。

如何在 WCF REST 中实现这一点?

问候。

PS:我在 Starter Kit 中看到过 RequestInterceptor 示例,但我想要的只是将它放在某些方法中,并且该示例看起来像您在所有操作中执行的过滤器。

0 投票
1 回答
1636 浏览

.net - 通过网络在 app.config 中加载具有 WCF 行为扩展的应用时出现 SecurityException

我有一个 .NET 4 .exe(Winform 桌面应用程序),已向其中添加了 WCF 行为扩展。该应用程序可以在本地计算机上正常加载,但在通过网络加载时会引发 SecurityException。如果我省略了 setMaxFaultSizeBehavior behaviorExtension,那么我可以通过网络加载应用程序。我将不胜感激任何可以帮助这项工作的信息。我已经确认文件没有被阻止,并且程序集名称完全匹配,包括空格。

app.config 的相关部分如下所示(我缩短了类型名称和程序集名称,在实际的配置文件中,我使用了完整的命名空间和程序集名称):

通过网络运行时遇到的异常是:

带有 System.Security.SecurityException 的内部异常

0 投票
1 回答
1804 浏览

.net - 无法添加自定义 WebHttpBehavior:无法添加具有相同键的两项

首先一点背景知识:我在 WCF 4 中有一个使用 WebHttpEndpoint 的 REST 服务。我不想在每个服务方法甚至每个服务类中都有明确的错误处理程序,而是希望有一个集中的错误处理程序,它可以进行日志记录并能够包装一个很好的自定义消息以传递给客户端。

我试图通过实现 IErrorHandler 并使用客户 WebHttpBehavior 添加它来做到这一点:

然后我使用 ExtensionElement 添加它:

如果整个错误处理方法看起来是个坏主意,请随时对此发表评论......

但是,我的问题是为什么在服务尝试启动时会出现此异常:

看起来 webHttp 或 errorHandler 行为都可以单独存在,但它们不会共存。

0 投票
2 回答
15435 浏览

.net - 自定义行为不会在我的 web.config 中注册

我有一个使用 Json.NET (newtonsoft) 作为自定义序列化程序的工作应用程序。目前,我正在自定义 WebServiceHostFactory 中添加 WebHttpBehavior 的这种派生。请参阅本博客末尾的代码片段,了解我是如何附加它的。

当我在 IIS 中托管此服务时,我想摆脱我的自定义托管代码,只需将自定义行为添加到我的 web.config。此msdn 文章中显示了该过程。

所以我尝试这样做:

可悲的是,我无法完成这项工作。当我这样做时,Visual Studio 会告诉我

元素“行为”具有无效的子元素“NewtonsoftJsonBehavior”

在上述msdn文章中,据说

要向元素添加配置功能,您需要编写并注册一个配置元素。有关这方面的更多信息,请参阅System.Configuration文档。

定义元素及其配置类型后,就可以使用扩展名了,如下例所示。

我有这种感觉,我所缺少的正是这一点。以某种方式注册元素及其配置类型。可悲的是,我无法对System.Configuration做出正面或反面,它应该告诉我如何做到这一点。所以这基本上是我的问题:

我如何编写和注册配置元素,如果这不是我的问题,那么问题是什么?

提前谢谢了!

0 投票
1 回答
1593 浏览

c# - WCF - 使用自定义端点行为时解决问题

我正在尝试在我的 WCF 服务中实现自定义端点/操作扩展。我已经在 websconfig 中连接了我的自定义扩展,以便我可以使用属性来装饰我的服务和操作。但是,这样做之后,我收到以下错误:

由于 EndpointDispatcher 的 AddressFilter 不匹配,接收方无法处理带有 To 'http://localhost:1605/Graph.svc/Triples/vbid/abk9185/0/en-us' 的消息。检查发送方和接收方的 EndpointAddresses 是否一致。

我做了很多搜索,但我无法弄清楚这个错误是什么意思或如何解决它。有人可以帮忙吗?

这是我将端点和操作行为“注入”到的服务:

这是我的端点和服务行为配置:

这是我的自定义端点/操作扩展配置:

最后,这是我的服务合同的示例:

“CorsBehavior”是我的自定义属性,它实现了 IEndPointBehavior 和 IOperationBehavior。

0 投票
1 回答
5486 浏览

wcf - 在配置文件中为具有在代码中创建的端点的服务设置 wcf 服务凭据

我希望能够在代码中设置服务端点的 uri,同时在配置文件中设置安全行为的配置。

以下为我提供了一些方法,服务使用正确的绑定配置 - 但我找不到将证书配置移动到配置文件的方法。

编辑:请注意这里有些混乱 - 配置文件配置消息级别安全的证书,ssl 端口控制传输级别的证书 - 根据 Richard Blewett 的回答

注释掉的代码是我需要在配置文件中找到一些等效的

编辑:为了后代,我更新了问题和答案以涵盖消息级别和传输级别,因为我需要同时满足两者。

0 投票
1 回答
1244 浏览

c# - 对 WCF 行为扩展进行单元测试

这真让我抓狂。我有一个扩展,如果出现错误,我们可以使用它来更改请求的内容响应。基本上,如果一切正常,它会像往常一样序列化为 JSON,但如果我们得到一个未处理的异常,我们会基于不同的对象进行序列化。

我们需要围绕这个进行单元测试,但我不知道如何编写它们。验证它是否有效的方法围绕着 StatusCode、故障消息实例和响应的 ContentType。

为了修改返回的响应,我使用了 WebOperationContext 静态类。我已经看到了嘲笑这个的例子,但似乎我必须硬编码特殊的逻辑,然后开始渗透到我不想要的实际代码中。

对 WCF 行为扩展进行单元测试的最佳方法是什么?