【问题标题】:WCF Service Operation doesnt start until i try to access it from clientWCF 服务操作直到我尝试从客户端访问它才开始
【发布时间】:2011-08-02 11:23:16
【问题描述】:

我有一个 wcf 服务 (wsDualHttpBinding) 我将它从 BasicBinding 更改为 wsDualHttpBinding 以支持事件,我实现了回调合同,这里的一切都是我的服务合同上的属性:

[ServiceContract(
    SessionMode = SessionMode.Required,
    CallbackContract = typeof(IServiceCallBack))]

现在的问题是:当我启动它运行的服务时,一切正常,除了它的操作没有开始! ,现在如果我打开客户端并尝试调用服务中的任何方法,它就会启动并开始操作,尽管我调用的方法与操作完全无关。

在我更改 wsDualHttpBinding 之前它也可以正常工作。

看起来服务在与客户端打开会话之前不会被实例化。

WCF 服务托管在控制台应用程序中。

如果自动启动设置为 true,我有一个要打开的端口列表,在 WCF 服务的构造函数中,我从数据库中获取端口并检查是否有自动启动并打开它,wcf 服务公开添加新端口、删除端口和编辑等功能

有什么办法解决吗?

提前致谢。

【问题讨论】:

  • WCF 操作必须被某些东西消耗,这就是重点..所以我不确定你在这里问什么。要让某些东西自动执行,编写 Windows 应用程序并安排它,甚至更好的自动启动的 Windows 服务。
  • 它是一个 Windows 服务,它执行操作并打开端口以进行侦听,以及一个 wcf 用于管理 Windows 服务。
  • 还是没有多大意义。您究竟希望该操作如何“开始”?应该从什么开始?
  • 如果自动启动设置为 true,我有一个要打开的端口列表,在 WCF 服务的构造函数中,我从数据库中获取端口并检查是否有自动启动并打开它,wcf服务公开诸如添加新端口和删除端口和编辑等功能
  • 很明显,该服务现在正在按需运行,就像我在 IIS 上托管它一样,虽然我将它托管在控制台应用程序中,但我不知道为什么会这样,也请注意它曾经可以工作当它使用 basichttpbinding 但现在我将其更改为双重时它停止工作。

标签: c# wcf wcf-binding


【解决方案1】:

在 IIS 中运行的 WCF 服务在调用之前不会启动。如果您正在运行最新(当前为 v7.5)版本的 IIS,那么您可以使用 AppFabric 自动启动功能,描述了here 并演示了here

【讨论】:

  • 我将它托管在控制台应用程序中!
  • 由于您将其托管在控制台应用程序中,能否请您提供用于启动 ServiceHost(s) 的代码?
  • var _ReceiverHost = new ServiceHost(typeof(Controller)); _ReceiverHost.Open();
【解决方案2】:

我正在做同样的事情来管理后台应用程序。 确保您的主机仍然可以实例化您的服务。如果您更改了绑定名称,您的主机可能无法再找到它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 2018-02-21
    • 2011-06-26
    • 1970-01-01
    相关资源
    最近更新 更多