问题标签 [wcf-4]

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 投票
3 回答
549 浏览

c# - WCF 常用参数 ClientMessageInspector、DispatchMessageInspector 还是替代方法?

我仅将 WCF 用于数据服务(即应用程序内部并且非常精简,没有会话状态等),以保持我们的 Web 应用程序可扩展。

我们需要为当前一直传入的每个服务调用提供一些通用属性。每次调用都只有一个请求对象并不理想,因为除了这些公共属性之外,其余的都非常多样化,并且在开发过程中变化非常频繁。

目前我正在考虑使用自定义标头和 clientmessageinspector 来设置值。对于这种情况,这是最简单的推荐方法还是有更好的方法?

更多详情..

下面的红点是我不确定正确方法(或如何去做)的地方。

在此处输入图像描述

发送什么

发送的数据是一组简单的 id(3 或 4 个用于 userid、clientid 等)——所有这些 id 都会影响安全性和性能(在某些情况下,它决定了要访问的数据库)。

我们还将扩展它以获得更复杂的权限 - Windows 工作人员不需要。

调用者将是一个 Web 应用程序,其中这些来自会话对象,或者是一个 Windows 服务工作者,其中这些是手动填充的。

当前的想法

理想情况下,调用者工作流上的 getinstance 将使用会话对象自动填充这些属性,或者使用 Windows 服务调用(不同的构造函数?)更手动地填充这些属性。

然后,我们将确保这些参数始终可用,无需任何思考,也无需在整个代码中不断引用,以在调用它的每个函数上构造合约。我们目前有很多服务调用(由于应用程序的规模/复杂性,而不是由于糟糕的工程:)),因此随着复杂权限的扩展,以自我记录的方式执行规则变得有点困难。

从概念上讲,会话是您在应用程序中处理此问题的地方,但服务实际上只是一个数据访问层(具有视图映射、分页和来自存储库调用的最后调用安全性),因此我们不需要那种重复或复杂性,只是要包含在查询中的关键身份和权限字段。

问题

这感觉很像我们应该对调用的标头做的事情,因为我们总是需要这些字段,但是我有点不确定 set 和 get 应该在端点和客户端接口的生命周期中的什么位置。我也很高兴我错了。

0 投票
1 回答
1703 浏览

.net - EndpointNotFoundException 的可能原因是什么?

我试图在下面找到 EndpointNotFoundException 异常的潜在原因(发生在客户端,异常是间歇性的)。异常消息描述了两个可能的原因:

  • 没有端点监听。
  • 不正确的 SOAP 操作。

我验证了这两个端点以及 SOAP 操作都可用。网络配置似乎是正确的,所有机器都已启动、运行且负载非常轻。我还检查了诸如代理(没有)、并发(maxConcurrentConnection 增加)和性能计数器(一切看起来都很正常)之类的东西。这可能是由于客户端库中的错误(我们正在合并代理)导致代理处于故障状态或某些套接字从未关闭吗?

简而言之,我想知道在客户端代理中间歇性地导致该异常的原因是什么。

0 投票
1 回答
1133 浏览

wcf - 具有多个 webHttpBinding 绑定的 WCF 服务在 Visual Studio 测试客户端中失败

我有一个定义了四个端点的服务,配置如下所示:

将服务与任何端点一起使用时,一切正常。但是,如果 xml 和 json 端点都存在,我不能在 Visual Studio 2012 中使用测试客户端。如果我注释掉一个或另一个,客户端可以工作,如果我将两者都保存在配置文件中,我会收到以下错误:

错误:无法从中获取元数据http://localhost:52832/VarugruppService.svc如果这是您有权访问的 Windows (R) Communication Foundation 服务,请检查您是否已在指定地址启用元数据发布。有关启用元数据发布的帮助,请参阅位于http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange
URI 的 MSDN 文档:http://localhost:52832/VarugruppService.svc
元数据包含无法解析的引用:http://localhost:52832/VarugruppService.svc
没有http://localhost:52832/VarugruppService.svc可以接受消息的端点监听。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException(如果存在)。
远程服务器返回错误:(404)未找到。HTTP GET 错误
URI:http://localhost:52832/VarugruppService.svc
下载“ http://localhost:52832/VarugruppService.svc”时出错。
请求失败,HTTP 状态为 404:未找到。

有任何想法吗?

0 投票
1 回答
326 浏览

visual-studio-2012 - WCF 服务发布和无文件激活:仍然创建一个 .svc 文件

使用 Visual Studio 2012,我创建了一个 WCF 4.5 服务库。当服务发布到我的本地 IIS 时,尽管配置文件中有serviceActivations部分,仍会创建一个 .svc 文件。

我还在配置文件中使用了自定义工厂,幸运的是,它没有丢失,因为 serviceActivations 覆盖了 .svc 文件。

配置文件如下所示:

创建的 .svc 文件如下所示:

我还有其他几个没有这种行为的服务,但我不知道出了什么问题。我不希望创建这个附加文件。

任何帮助表示赞赏。

0 投票
1 回答
194 浏览

wcf - WCF 与 InterSystems 的双工通信

有人可以指出如何使用 wsDualHttpBinding 调用 WCF 服务的示例吗?我使用 SOAP 客户端向导创建了这些类,并且一切都编译好了。当我运行 objectscript 代码时,它会在 Web 服务调用上挂起一段时间(它正在超时)并返回一个异常:

| 矿石价值:4
| 类名:%Exception.SystemException
| OID: ""
| 引用计数:2(系统)
+----------------- 属性值 ------------------
| 代码 = 64
| 数据 = ""
| 内部异常 = ""
| 位置 = "zInvokeClient+349^Service.WSDualHttpBindingIService.1"
| 名称 = ""

和 %objlasterror 给出:

位置设置为"http://localhost:8733/Design_Time_Addresses/PNServices/Service1/"

任何想法/线索?

0 投票
1 回答
55 浏览

c# - WCF (4.5) 主机中的触发事件

我试图让它最新版本的 WCF 中工作。

问题是BatServ我无法从添加的服务参考中使用它。只会IBatServ。这是因为最新版本的 WCF 还是其他原因?

0 投票
1 回答
419 浏览

wcf - wcf 错误异常未抛出/被正确捕获

这是我得到的例外:

TestService.exe 中出现“System.ServiceModel.FaultException`1”类型的异常,但未在用户代码中处理

我尝试运行我的客户端,当我尝试执行以下操作时调试器被捕获

可能是什么问题呢。如果我需要提供更多信息,请告诉我。

0 投票
1 回答
1074 浏览

.net - 无法启动应用程序“WcfTestClient.exe”

当我添加超过 38 个服务并尝试从 Visual Studio 运行我的 WCF 项目时。它给出以下错误。

在此处输入图像描述

无法启动应用程序“WcfTestClient.exe”

单击是后它停止。在单击“否”后,它以运行模式显示,但我看不到 Wcf 测试客户端。并且无法调用服务。

app.config 中有 38 个服务,它可以正常工作。

我的 app.config 如下所示

0 投票
2 回答
1849 浏览

wcf - MSMQ + WCF - 立即将消息移动到死信队列

我们有一个 WCF 服务,用于侦听队列 (MSMQ) 上的消息。它向我们的 Web 服务器 (REST API) 发送一个请求,该服务器返回一个 HTTP 状态代码。

如果状态码在 400 范围内,我们将丢弃该消息。这个想法是 400 范围错误永远不会成功(未经授权、错误请求、未找到等),因此我们不想继续重试。

对于所有其他错误(例如,500 - 内部服务器错误),我们将 WCF 配置为将消息放在“重试”队列中。重试队列上的消息会在一定时间后重试。这个想法是服务器暂时关闭,所以等待并重试。

WCF 的设置方式,如果我们FaultException在服务契约中抛出一个,它会自动将消息放到重试队列中。

当消息导致 400 范围错误时,我们只是在吞下错误(我们只是记录它)。这可以防止重试机制触发;但是,最好将消息移动到死信队列。这样,我们可以通过向用户和/或系统管理员发送电子邮件来对错误做出反应。

有没有办法立即将这些坏消息移动到死信队列?

0 投票
2 回答
1825 浏览

c# - 如何获取客户端 IP。苹果电脑。PC 名称使用 wcf4(tcp/ip 模式)

我有一个在 LAN 服务器上运行的 wcf 服务,使用 tcp/ip 模式。现在,当客户端发送请求连接 wcf 服务时,我需要获取每个客户端信息。因为一切都在局域网上。我只需要获取客户端 MAC、IP、PC 名称。有没有办法得到这些信息?谢谢。