问题标签 [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 投票
2 回答
3269 浏览

wcf - wcf配置文件中的自定义ServiceHost?

我想知道是否有办法在配置中指定自定义 ServiceHost(即 ServiceHost 派生类)?谢谢

0 投票
4 回答
7071 浏览

wcf - WCF ServiceHost basicHttpBinding 503 错误

我正在尝试在 Windows 2007 SP1 服务器上将 WCF ServiceHost 作为 NT 服务运行。ServiceHost 负责托管单个服务端点:具有以下地址的 basicHttpBinding:

当我在本地机器 (Windows XP) 上运行此 ServiceHost 时,它工作正常 - 当我向它发布 SOAP 消息时,我会返回一个 HTTP 202 代码(“已接受”),这是我的服务的正确响应,因为合同有 IsOneWay=true。但是,当我在我的 2007 服务器上运行它时,当我尝试调用该服务时出现 503 错误。我将 WCF 消息日志记录“一直向上”,但我没有看到任何日志记录,这让我相信这发生在比 WCF 更低的级别(调用永远不会到达 WCF“层” )。

系统管理员和我尝试了各种形式的 httpcfg 命令,但到目前为止没有运气。

我知道尝试在 IIS 中托管它可能是一种可能的解决方案,但我们的生产应用程序服务器没有安装 IIS,所以我只想将服务作为 ServiceHost 运行。

任何想法将不胜感激!

0 投票
1 回答
1746 浏览

c# - 双工回调始终是匿名的

我写了一个 WCF 双工服务和客户端。在我尝试在客户端实现中调用 .Demand() 之前,一切正常。该服务似乎匿名调用回调方法。我想我错过了如何正确配置服务。

用于创建 ServiceHost 的代码;

用于创建客户端的代码;

客户端实现:

如何配置以便 ServiceHost 使用 Windows 凭据正确调用回调?

0 投票
1 回答
9452 浏览

wcf - WCF 服务 - 运行时看不到接口上的 ServiceContract

我是 WCF 的新手,并试图让我的第一个服务运行。我很接近但坚持这个问题。

在我的接口定义文件中,我有这个:

然后我有继承它的类文件(用于服务):

最后,在我的主机项目中,我有这个:

一切都编译得很好,当主机去添加服务端点时,它会爆炸:“合同类型 Inventory.InventoryService 没有使用 ServiceContractAttribute 属性。为了定义有效的合同,指定的类型(合同接口或服务)类)必须使用 ServiceContractAttribute 进行属性化。”

我知道我在这里遗漏了一些简单的东西。我将接口明确标记为服务合同,并且在 Host 项目中有对该项目的引用。

0 投票
1 回答
188 浏览

wcf - 在 Workflow 中使用自定义主体

我有一个托管多个 WCF 服务的应用程序。我创建了一个运行良好的自定义 ServiceAuthorizationManager。我检查 OperationContext.IncomingMessageHeaders 上的一些元素以获取用户名和密码。这是为了克服我们环境中的一些限制,这些限制不允许我们使用平台内置的内容。管理器创建一个自定义 IPrincpal,其中包含一些必要的自定义对象,并将其放置在当前运行的线程上,以供稍后在 WCF 业务逻辑中使用。这很好用。

问题是我有一个 WCF 服务,它是一个工作流,我需要在那里使用相同的机制。管理器被正确调用,但是当执行线程的 currentPrincpal 不是我的自定义主体时,它是一个通用主体。调查显示工作流运行时正在创建一个线程,而不是使用 WCF 调用所在的线程。

有没有人遇到过这个问题,有什么好的解决方案吗?

0 投票
2 回答
45781 浏览

c# - WCF:什么是 ServiceHost?

由于我目前正在学习使用 WCF 服务,因此我经常在互联网上遇到教程,其中提到ServiceHost在使用 WCF 服务时使用 a 。

这到底是什么ServiceHost


在我当前的项目中,我正在使用 WCF 服务并从我的应用程序中引用它,每当我想从我的应用程序中使用它时,我只需ServiceClient像这样实例化它:

然后从该实例访问我的网络方法(OperationContracts)(显然在使用方法之前打开它,然后用 and 关闭OpenClose

我的 WCF 服务托管在我的 IIS 中,我只需.svc从我的应用程序访问ServiceClient.

那么为什么以及在哪里ServiceHost使用呢?

0 投票
1 回答
2610 浏览

.net - WCF:: ServiceHost: Oddity...即使线程死了还活着吗?

这里有一个新成员。很高兴看到这样一个整洁的社区。

经过一番研究,我决定在我的应用程序中使用 WCF 进行进程间通信,因此我使用了 NetNamedPipeBinding 绑定。

ServiceHost 托管应用程序不是专用服务器,因此它必须通过线程生成 ServiceHost。到现在为止还挺好。

所以我有以下内容:

正如预期的那样,我看到:

但令我惊讶的是,即使服务器运行的线程已经兴奋,客户端仍然可以连接到 serviceHost 并且服务主机正确处理请求!

那么为什么 ServiceHost 仍然在处理和处理请求,即使它的主线程(它创建的那个)已经死了?

还有一种更好的方法可以让 ServerThread 保持活动状态一段时间(true){Thread. 睡眠(100);}?

谢谢。

0 投票
3 回答
8333 浏览

.net - WCF:: ServiceHost & AddServiceEndpoint: 参数类型是否颠倒?

虽然我正在尝试学习 WCF,而且看起来很简单,但我遇到了一个奇怪的情况……至少在我看来这很奇怪。

为什么 ServiceHost ctor 采用具体类,而 AddServiceEndpoint 采用接口,反之则不然?从 OOP 的角度来看,后者似乎更合乎逻辑。

考虑以下:

所以现在我们要创建一个“AnimalSound”服务,您可以通过 /AnimalSoundService/Dog 或 /AnimalSoundService/Cat 连接来获取狗或猫的声音

但是上面的代码由于某些原因无法编译,因为我不太明白,ServiceHost ctor 想要具体的类(所以是 Dog 或 Cat),而 EndPoint 想要接口。

那么它不是反之亦然的原因是什么,因为在我看来,更细粒度的端点支持特定的实现更自然(因此您可以针对每个端点地址命中合同的特定实现),而更通用的 ServiceHost 应该是一个接受接口?

顺便说一句,我不是迂腐……我只是诚实地试图理解,因为我确信是我在这里错过了一些东西。

0 投票
3 回答
5244 浏览

c# - 如何在 Windows 服务中设置可以访问 Windows 服务中的状态信息的 WCF ServiceHost

我用 C# 编写了一个 Windows 服务。它运行良好并且表现良好。我在 Windows 服务中添加了 WCF 服务,以使客户端应用程序能够连接到 Windows 服务并从 Windows 服务中获取有状态信息。

我将 WCF 服务配置为单例,以便使用同一个服务实例来处理来自所有客户端的所有请求,如下所示:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]

所有客户端都能够连接并访问 WCF 服务中的相同状态信息。但是,我遇到了以下特殊行为。

修订:我在我的 Windows 服务中
实例化 WCF服务合同。在实例化时分配的任何有状态信息都可用于连接到服务的所有客户端。

但是,稍后直接从​​ Windows 服务(不是由客户端)添加到服务合同实例的任何状态信息对于连接到该服务的客户端是不可见的。就好像服务契约有两个实例:一个用于 Windows 服务,一个用于连接到 WCF 服务的客户端。

实例化 WCF 服务并使其能够访问 Windows 服务中可用的状态信息的推荐(最佳)方法是什么?

0 投票
2 回答
3862 浏览

c# - 如果两个应用程序使用不同的端点地址,它们可以共享相同的 WCF NetTcpBinding 端口吗?

我有一个客户端和服务器方案,其中一个服务安装在客户端上,另一个服务安装在服务器上。当它们安装在不同的机器上时,我没有问题。但是,我还希望能够在同一台机器上安装客户端服务和服务器服务。我可以将它们设置为使用不同的端口,但是我想使用单个端口来完成此操作。

我已经启用并启动了 Net.Tcp 端口共享服务 Windows 服务。我首先启动服务器服务。当我尝试启动客户端服务时,执行 serviceHost.Open() 时出现以下异常:

The TransportManager failed to listen on the supplied URI using the NetTcpPortSharing service: the URI is already registered with the service.

下面是源代码。服务器和客户端都使用不同的端点地址,如下所示:

服务器服务:

客户服务: