问题标签 [wcf-endpoint]
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.
.net - 将 WCF 配置为使用两个端点之一
如何将 WCF 配置为仅使用两个可用端点之一?
我需要两个 TCP 端口(因此使用netTcpBinding
)。服务主机应首先尝试绑定到第一个端口。如果它失败了,并且只有当它失败时,它才应该尝试绑定到第二个端口。
编辑
我知道它可以通过编程方式实现,但我打算以声明方式(.config
仅使用文件)来实现。
.net - 服务具有零个应用程序(非基础设施)端点
我最近创建了一个 WCF 服务 (dll) 和一个服务主机 (exe)。我知道我的 WCF 服务工作正常,因为我能够成功地将服务添加到 WcfTestClient。
但是,当我从服务主机 (exe) 使用 WCF 时,我似乎遇到了问题。我可以向我的服务主机 (exe) 添加对 WCF (dll) 的引用,并为 exe 创建必要的组件;例如服务安装程序、服务主机和app.config,编译然后最后使用InstallUtil安装exe。但是,当我尝试在 Microsoft 管理控制台中启动该服务时,该服务在启动后立即停止。
所以我开始调查究竟是什么导致了这个问题,并从事件查看器中的应用程序日志中发现了这个错误。
描述:
无法启动服务。System.InvalidOperationException:服务“服务”的应用程序(非基础设施)端点为零。这可能是因为没有为您的应用程序找到配置文件,或者因为在配置文件中找不到与服务名称匹配的服务元素,或者因为在服务元素中没有定义端点。
这个错误实际上是在OnStart
; 我的 exe,当我执行这个调用时ServiceHost.Open()
。我看过很多其他人遇到这个问题的帖子,但是大多数人(如果不是全部)声称服务名称或合同;命名空间和类名,没有被指定。我在配置文件中检查了这两个条目;在 exe 和 dll 中,它们完全匹配。我让办公室里的其他人在我身后仔细检查,以确保我没有在某一时刻失明,但当然他们得出了与我相同的结论,即一切看起来都是正确指定的。我真的对此时发生的事情感到迷茫。谁能帮我解决这个问题?
可能发生这种情况的另一件事是 app.config 从未被读取;至少不是我认为应该阅读的那本书。这可能是问题吗?如果是这样,我该如何解决这个问题。再次,任何帮助将不胜感激。
c# - 在代码中覆盖配置文件 WCF 基地址
我有一个 WCF Windows 服务,其端点在服务的配置文件中指定。
一切正常。但是,在某些情况下,端口 9000 可能已经在使用中,这会导致 ServiceHost 在 Open() 上失败。我需要能够覆盖代码中配置文件中指定的默认基地址。例如,假设环境变量包含要使用的端口号。
有没有办法以编程方式做到这一点?
构建 ServiceHost 后,我可以看到 BaseAddresses 属性,它返回从配置文件中获取的 Uri 列表。但是,这是一个只读集合,因此不能用于更改默认值。
如果我在 ServiceHost 构造函数中指定替换 Uri 我得到
此集合已经包含一个带有方案 net.tcp 的地址。此集合中的每个方案最多可以有一个地址。如果您的服务托管在 IIS 中,您可以通过将“system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled”设置为 true 或指定“system.serviceModel/serviceHostingEnvironment/baseAddressPrefixFilters”来解决问题。
如果我创建一个 CustomServiceHost 并尝试设置替换基地址,我会得到同样的错误。
我知道如果我将配置文件基地址留空并将基地址传递给 ServiceHost 构造函数,那么它工作正常 - 即我可以指定新的基址。但是,我想使用配置文件来指定默认值(而不是硬编码)。
.net - 可能有相同的合同,相同的绑定,相同的地址,但不同的端口?
我有需要通过 basicHTTPBinding 进行通信的手持设备。我有一份合同,一切都按广告宣传。
我需要对其进行扩展,以便轻松支持更改为测试环境、培训,当然还有生产。我采用了端口路由,认为我可以通过端口差异公开不同的端点,并根据端口决定我想要从哪个数据库获取信息。
我似乎无法完成这项工作,到目前为止,在任何地方都没有发现任何信息表明它可以完成。由于端口是可选的,因此可能不是。
有人做过这样的事吗?
wcf - 使用 powershell2 访问 wcf Web 服务
我正在尝试编写一个访问我的 wcf web 服务之一的 cmdlet。
我一直在研究新的 cmdlet:New-WebServiceProxy,但它似乎真的能够使用 ASMX Web 服务。
我看过这篇文章;专注于 Powershell v1.0 我宁愿使用更好的方法(如果存在的话)。 http://keithhill.spaces.live.com/blog/cns!5A8D2641E0963A97!645.entry
从我使用此 Web 服务的其他 .net 应用程序中,这是我使用的那种配置;
有人想给我建议吗?
wcf - WCF 终结点中允许使用哪些类型的非 HTTP 地址?
我只是想通过不了解IIS 和 WAS 来节省时间,所以我制作了一个控制台应用程序来托管我的 WCF 服务。但是,这让我不确定如何指定不是 HTTP 地址的端点地址。以下配置可能是我的运行时错误的来源吗?异常描述是:找不到与绑定 WSHttpBinding 的端点的方案 http 匹配的基地址。注册的基地址方案是 []。
wcf - 按端点塑造 WCF 服务
我有 2 个合同(cA 和 cB),由具有 2 个端点(epA 和 epB)的单个 WCF 服务实现。
这不是出于安全目的,而纯粹是出于清晰/组织的原因,当我通过端点 A 发现服务时,我只想“查看”ContractA 的操作;同样,只能通过endpointB查看ContractB的操作。
我不需要“保护”这些操作本身。这种情况是这样的,任何给定的客户端只需要服务的一个“方面”,而不是两者(但是,操作本身共享资源,因此拥有一个服务而不是两个服务是有意义的)。
似乎任何给定的服务基本上都会获得 1 个 WSDL,因此所有操作都暴露给所有端点。这是它的工作方式,还是有办法通过屏蔽端点合同未定义的操作来“塑造”端点?
wcf - 存在名称参数时未拾取 WCF endpointBehaviors 扩展?
我正在尝试使用自定义 MessageInspector 扩展我的服务端点行为,扩展工作正常并且它被拾取,但前提是我没有在行为标签上定义“名称”参数并且没有在端点上定义特定的行为配置。这意味着我正在扩展所有端点,这是我不想要的。谁能解释一下我做错了什么?
此配置不会获取myBehaviour
扩展名并且不会失败。
但是删除
并更改行为标签,因此名称不存在
工作得很好。
谢谢
wcf - 每个方法的 WCF 不同端点?
是否可以将 WCFService 中的方法限制为仅响应特定端点?
例如,我的服务有多种方法,其中一种方法是接收文件。我公开了两个端点,一个使用 MTOM。
是否可以只允许 MTOM 用于“文件”方法。
如果最终用户想要将 MTOM 用于所有其他调用,那就是他们的调用,但我需要坚持使用“文件”方法。
.net - 基本 wcf 服务返回错误服务“”有零个应用程序(非基础设施)端点
我创建了一个空白 Web 应用程序并添加了一个启用 ajax 的 wcf 服务。我没有修改我正在使用模板提供的实际 svc.cs 文件
}
我已经稍微更新了配置,看起来像这样
但是,当我尝试点击服务时,出现错误
服务“SP.WebWCF.ActivateCardV1”的应用程序(非基础设施)端点为零。这可能是因为没有为您的应用程序找到配置文件,或者因为在配置文件中找不到与服务名称匹配的服务元素,或者因为在服务元素中没有定义端点。
我究竟做错了什么?