问题标签 [servicehost]

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

wcf - 可以通过 Internet 访问 Windows 服务中托管的 WCF 吗?

我需要对 WCF 有所了解。

我正在开发一个客户端服务器应用程序。项目计划是这样的。

我们有一台服务器在 Windows 7 上运行 SQL Server 2008(我知道 Windows 7 不是服务器的最佳选择,但它现在有 Windows 7)。我正在计划构建 WCF 服务集群,这些服务将托管在 Windows 服务上,并在服务器端使用 net tcp 绑定。这些 WCF 服务集群处理应用程序和数据库事务的所有业务逻辑。

此时将有 25 个 Windows 客户端(将来可能会增加)运行客户端应用程序。所有客户端都在同一个局域网中,所以我猜上面的架构可以工作,所有客户端都可以使用网络 TCP 绑定访问在服务器上运行的 WCF 服务。如果我错了,请纠正我...

我将来想做的是我想创建一个移动客户端应用程序或 Silverlight 客户端应用程序来访问相同的 WCF 服务......如果我在 Windows 服务中托管了 WCF 服务并且移动客户端应用程序/Silverlight 客户端应用程序是否有可能是在同一个网络(同一个局域网)??(我想没有看到评论)

如果我想通过互联网访问它怎么办?可以通过 Internet 访问托管在 Windows 服务上的上述 WCF 服务吗?(如果它是 nettcp 绑定但只能由其他 WCF 应用程序绑定 - 请参阅评论)

如果没有,我可以为 WCF 服务创建 http 基本端点,同时将它托管在 Windows 服务中并可以通过 Internet 访问吗?

如果没有,我可以在 Windows 服务和 IIS 中托管相同的 WCF 服务吗?

如果您希望 WCF 可以通过 LAN 和 Internet 访问,那么最好的选择是什么?

0 投票
0 回答
163 浏览

c# - 如何从 CustomPeerResolverService 捕获和存储 MeshEntry/P2P 端点?

是否可以像通过 OperationContext.Current.GetCallbackChannel<> 捕获客户端回调通道一样捕获和存储 MeshEntry?

我可以看到 CustomPeerResolverService 中列出的 MeshEntrys,但我不确定对等点是否可以识别和定位特定对等点。我仍然希望服务器为每个客户端保留一个回调通道,但是否可以在我的客户端类中存储 MeshEntry 或类似的属性,并让 CallbackChannel 反序列化。我希望一个同伴通过这个渠道联系另一个同伴。

谢谢

0 投票
2 回答
209 浏览

wcf - WCF 服务可以访问在同一进程中运行的其他服务主机吗?

我想创建一个服务,其工作是监视在同一进程中运行的其他服务,然后报告基本信息,如运行状况或服务依赖关系。我无法确定监视服务访问有关其他服务的详细信息的最佳方式,而不必让每个服务发布其元数据或公开监视服务可以与之通信的某些自定义端点。如果我加载配置并通读它,我可以获得大部分的方法,但这种方法有一些缺点:

  • 获取每个端点的绝对 URI 可能很困难,尤其是在使用 IIS 托管或无文件激活时。
  • 任何以编程方式完成的配置都无法被监控服务读取

我希望能够以某种方式访问​​ ServiceDescription 以获取我需要的关于每个 ServiceHost 的所有信息,而无需服务设计人员的任何工作将其提供给我。这样的事情可能吗?

0 投票
1 回答
948 浏览

azure - Azure 辅助角色中的 WCF 服务在空闲后第一次请求时变慢

我们有一个 Azure 辅助角色,它通过 ServiceHost 公开 RESTful WCF 服务(使用 System.ServiceModel.Web)。在大流量上的性能是无可指责的,但是当角色空闲一段时间时,第一个请求的响应时间似乎要长得多(超过 5 秒)。有谁知道这可能是什么原因?

0 投票
2 回答
7309 浏览

c# - 在 ServiceHost(控制台应用程序)中运行的 WCF 服务

我正在尝试将以前在任务栏中的 .asmx 服务中运行的 WCF 服务包装到控制台应用程序中。

以下是包装 WCF 服务的代码:

但是,应该接收此服务的客户端应用程序(在服务被包装到控制台应用程序之前曾经工作)现在崩溃并出现错误:

http://localhost:5000/CheckoutService.svc上没有可以接受消息的端点侦听。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException(如果存在)。

app.config 中此客户端的端点配置为:

我想也许我.config在托管 WCF 服务的控制台项目中缺少某种形式的文件,但我可能错了!

0 投票
3 回答
1411 浏览

java - 在没有服务器应用程序的情况下部署 Java Web 服务

我希望在不需要服务器应用程序的情况下部署 Java Web 服务。我知道我可以通过托管可执行文件(C# 中的 ServiceHost 类)来部署 C# WCF 服务,但是我可以在 Java 中做类似的事情吗?

0 投票
3 回答
1368 浏览

.net - 为什么 WCF ServiceHost 一旦超出范围就保持打开状态?

我只是在整理我的一些 WCF(自托管)代码,并意识到我的 ServiceHost 对象在最初设置后超出了范围,但我仍然可以连接到它。

如果我再次调用它并重新实例化它并尝试再次打开它,我会收到一条错误消息,指出已经有一些东西连接到端点。它仅在应用程序关闭时才被释放。

我只能假设对 Open() 的调用在较低级别上做了一些事情,以使其以现在不受管理的方式保持打开状态。但是,除非我在这里完全误解了事情,否则我找不到任何有关此的信息。

考虑一下,连接现在仍然打开,但我无法在不杀死应用程序的情况下恢复它(关闭等),这似乎并不正确。或者也许这甚至无关紧要,如果它不伤害任何东西,我可以一直让它打开?

更新:所以我接受了 Eiver 的回答,因为它解释了我最初的问题,即为什么即使在超出范围后它仍然保持打开状态。但是,我现在想知道一些关于此的事情(或者我可能对线程缺乏经验)。首先,只要它是开放的,我是否会为此烦恼,这一切都是正确的。如果有某种方法可以通过将线程保持在范围内来访问线程,它甚至会有所帮助。也许,像这样设置它(并且从不调用 close)使调用代码变得简单(即不必保留引用),我什至可以将它包装在一个静态方法中以进行更简单的调用。听起来有点躲闪……嗯!

更新2:所以,我知道这样做不好,因为这意味着我不再控制主机和启动它的线程。所以我把它全部包装成一个单例,让我能够在任何时候访问主机(对于错误、事件、在同一端点上关闭/重新打开等)并使调用非常简单(就像一个简单的静态方法称呼)。

0 投票
3 回答
440 浏览

c# - 是否可以运行他们键入的具有泛型的 ServiceHost?

例如

在这种情况下,T 是 TransactionProcessingService。

到目前为止,我的应用程序配置出现错误,不知道应该如何修改它:

服务 'TransactionProcessingWindowsService.TransactionProcessingService`1[[Common.TransactionProcessing, Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' 的应用程序(非基础设施)端点为零。这可能是因为没有为您的应用程序找到配置文件,或者因为在配置文件中找不到与服务名称匹配的服务元素,或者因为在服务元素中没有定义端点。

这是我尝试设置配置的方式

谢谢

0 投票
1 回答
1486 浏览

windows - Getting HTTPS to Work with WCF and a Windows Service

I tried updating the App.config files for the client and service for the MS sample applications in WF_WCF_Samples\WCF\Basic\Services\Hosting\WindowsService\CS\WindowsService.sln so that secure bindings were used but when the client makes the call to the service method an exception is thrown

"An error occurred while making the HTTP request to https:// .... /servicemodelsamples/service. This could be due to the fact that the server certificate is not configured properly with HTTP.SYS in the HTTPS case. This could also be caused by a mismatch of the security binding between the client and the server."

Inner exception "The underlying connection was closed: An unexpected error occurred on a send"

As far as I can see both the server and client configs match and use Transport security mode and the mex endpoint now uses mexHttpsBinding rather than mexHttpBinding with the service behaviour appropriately enabled.

Can someone tell me what is missing or incorrect as I have tried numerous tweaks with no success?

Thanks

The server and client configs are

and

0 投票
0 回答
406 浏览

wcf - 单元测试 WCF 服务/服务主机如何正确初始化 DI、AutoMapper、引导、全局错误处理?

我有几件事我还没有弄清楚如何测试,因为它们紧密集成到 WCF 管道中。也许我应该问如何集成测试?这是我的情况,分为两部分:

1)为了引导我的 DI(我正在使用 Unity Container),我实现了一个自定义 ServiceHostFactory。在这个服务主机工厂中,我传入了我的引导程序代码(例如,用于 AutoMapper 和其他东西)。

如何测试所有这些项目都被调用并且我的配置是否正确?当然,当我输入这个时,也许这应该被视为集成测试?如何托管我的服务并使用我的测试对其进行测试?

2) 我的服务也有一个全局错误处理程序。我想编写一个模拟测试来引发异常并验证全局错误处理程序是否确实在捕获它们。

谢谢!

更新:也许我的问题不是很清楚,但经过更多的谷歌搜索,我认为就是我所追求的

其他想法或指针表示赞赏。还没有尝试过,因为我不确定我应该去哪个方向。