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

c# - WCF 通信错误随机发生,无法捕捉到原因

我有一个使用 WCF 作为通信接口的应用程序。有时,客户端调用 ServiceHost 并收到该错误:

此通道不能再用于发送消息,因为输出会话由于服务器启动的关闭而自动关闭。通过将 DispatchRuntime.AutomaticInputSessionShutdown 设置为 false 来禁用自动关闭,或者考虑使用远程服务器修改关闭协议。

经过 1 个月的研究,我有点无法解决问题。

我认为 serviceHost 超时并且未处理异常。这使我的 serviceHost 关闭。所以该消息不是问题的直接原因,我不知道如何调试或处理来自 WCF ServiceHost 的错误

0 投票
1 回答
878 浏览

c# - 如何确认在我的单元测试中在我的 ServiceHost 上调用了 Open()

我有一个正在打开两个 WCF 服务的 Windows 服务。我想对 OnStart() 进行单元测试并断言 service1.Open() 和 service2.Open() 正在被调用。OnStart() 看起来像这样:

我在构造函数重载中注入服务,如下所示:

我正在使用 RhinoMocks 生成一个 ServiceHostBase 存根,如下所示:

当我的测试调用 OnStart() 时,我在调用 service1.Open() 时得到一个空引用异常。我已经确认 service1 在这一点上是一个模拟对象,并且它是 Open() 抛出空值。我知道 Open() 实际上是 System.ServiceModel.Channels.CommunicationObject 上的一个方法,我也尝试了 Stubbing 或 Mocking,但我仍然收到对象引用错误。它不是虚拟方法,所以我认为它只是没有被模拟版本覆盖,但是当我尝试设置 Expectationreportservice.Stub(r => r.Open())时,我得到一个不同的异常,即没有默认超时,就好像它正在运行实际的 CommunicationObject Open() 方法而不是抛出 null ref 的 RhinoMocky 方法。

综上所述,我只是在寻求有关如何确认在单元测试中在我的 ServiceHost 上调用 Open() 的帮助。=]

0 投票
1 回答
560 浏览

wcf - 如何删除 ServiceHost 持有的大对象堆上的 Byte[]

我有一个 WCF 服务,它使用 HTTP 协议。当一个特别大的查询到达系统时,它会创建一个大的 Byte[],它通过缓冲区引导到 HttpChannelListener 并最终到达服务主机本身。即使在 WCF 事务完成后,它仍然存在。这反过来会导致大型对象堆碎片,最终导致应用程序抛出 OOM 异常。

这是 Byte[] 的路径:ServiceHost.channelDispatchers.items._items[0].listener.innerChannelListener.typedListener.bufferManager.innerBufferManager.bufferPools[13].pool.globalPool.items._array[0]

系统对事务使用缓冲的 WCF 通信以确保其可靠。

我能做些什么来防止这些大对象留在内存中吗?

0 投票
1 回答
994 浏览

c# - 如何正确关闭通道工厂?

我想知道如何正确关闭 channelFactory。实际上,我正在使用:

但是到 ServiceHost 方面,未处理的异常到达域级别(应用程序的顶层)。我不明白为什么服务主机不捕获异常并使用我配置的 IErrorHandler 处理它。

这就是我配置 ErrorHandler 的方式:

0 投票
1 回答
885 浏览

c# - WCF - 未调用自定义 UserNameSecurityTokenAuthenticator 中的 ValidateUserNamePasswordCore() 方法

我已经定义了一个自己的ServiceCredentials提供者:

当我启动ServiceHost时,该提供程序会在CreateSecurityTokenManager()方法中生成自定义SecurityTokenManager

PasswordSecurityTokenManager类:

该实例在CreateSecurityTokenAuthenticator()方法中生成自定义SecurityTokenAuthenticator :

生成的实例是自定义CustomUserNameSecurityTokenAuthenticator

问题是在任何时候都不会调用被覆盖的ValidateUserNamePasswordCore()方法:

在我的自定义IAuthorizationPolicy提供程序PasswordAuthorizationPolicy中,我想在Evaluate()方法中为EvaluationContext设置自定义主体。

但是如果不调用upper方法,就不能定义额外的IAuthorizationPolicy项。

这里有什么问题或遗漏?

我不使用 XML 来配置我的服务,我 100% 用 C# 代码来做这件事!

编辑:代码基于以下博客文章: http: //www.neovolve.com/post/2008/04/07/wcf-security-getting-the-password-of-the-user.aspx

0 投票
1 回答
409 浏览

wcf - 使用 Ninject 在 Azure 上部署时 WCF 服务出现故障

从今天早上开始,我一直收到以下错误:(

无法激活请求的服务“http://10.175.156.xx:yyyyy/SomeService.svc”。有关详细信息,请参阅服务器的诊断跟踪日志。

在 Azure 上打开 svc 日志时,我看到以下警告和错误:

W:无法打开 Ninjet.Extensions.Wcf.NinjectIISHostingServiceHost`1[MyNameSpace.Servicelayer.SomesSrvice W:故障 Ninject.Extensions.WCf.NinjectIISHostingServiceHost[MyNamespace.ServiceLayer.SomeService] W:ServiceHost 故障

有时,我会看到以下错误,然后是上面的警告:

E:加载服务的性能计数器失败。此服务将无法使用性能计数器。实例 'SomeService@||SomeService.svc' 已存在于 CounterSet 'e829b6db-21ab-453b-83c9-d980ec708edd' 中。参数名称:InstanceName

上周运行良好,我在 Azure 上没有看到任何变化。

顺便说一句,它在本地运行良好。

编辑:由于我还不能回答我自己的问题,我正在编辑帖子以包含“解决方案”:(

`好的!看起来问题缺少一些参考:(

我在 WCF 项目中添加了一个类库项目,并且该类库引用了 MVC 4。

0 投票
0 回答
129 浏览

servicehost - 需要根据数据库信息设置服务行为的自定义ServiceHost

我创建了一个自定义服务主机并且覆盖ApplyConfiguration()效果很好,但我找不到添加服务行为的方法。
所有服务模型都从配置文件中删除,并从数据库中获取设置。
端点工作得很好。
服务行为是一种痛苦。我试图添加一个ServiceBehaviorElementSystem.ServiceModel.Configuration.BehaviorsSection但它是只读的,我无法解决这个问题。
我尝试只将行为添加到servicehost.Description,但我无法在其中添加完整的行为元素,一个具有 Name 属性的元素,并且我可以在其中添加一组行为。

任何帮助都会很棒。

0 投票
1 回答
982 浏览

c# - 在 C# 中增加 ServiceHost 的 maxRequestLength/executionTimeout

我有一个在服务器上运行的 winForms 应用程序,我通过运行在ServiceHost.

问题是,当客户想要从中获取的数据ServiceHost很大时,我会遇到如下异常:

接收时出错,原因可能是未使用 http 协议。

我该如何解决这个问题?这将是一个 Web 应用程序吗?我只需增加 web.config 中的 maxRequestLength/executionTimeout。但是winforms项目中没有web.config。

编辑:这是一些代码:

0 投票
3 回答
3476 浏览

rest - PHP REST API 和预定服务的托管服务

我已经使用 PHP 实现了 REST API。此 API 访问 MySQL 数据库。

我一直在寻找托管服务,但我不知道从哪里开始,大多数此类服务是指虚拟主机,据我所知,这不是我需要的。

任何人都可以建议任何免费或廉价的服务来支持我的要求吗?我还需要安排定期访问 REST API 的服务。这个还没有实现,因为我不确定托管服务通常支持哪种语言/框架。

任何帮助都非常感谢。

0 投票
1 回答
4565 浏览

wcf - WCF:如何从 ServiceHost (WCF 4.5) 获取创建实例的引用

在我的服务器端控制台程序中,创建了多个 ServiceHost 对象并在 PerSession 模式下工作,而不是单例。因此,当新会话开始时,将创建一个新的服务器端对象。

问题是:我如何知道哪个是与新创建的服务器端对象链接的正确 ServiceHost 对象?我确实需要此链接信息以进行进一步操作。

我可以从新创建的服务器端对象中获取 ServiceHost 信息吗?通过将其转换为另一个接口或类?或者,我可以挂钩ServiceHost的实例创建过程吗?

任何的想法?

非常感谢。