【问题标题】:Deploying WCF Service Host app?部署 WCF 服务主机应用程序?
【发布时间】:2014-11-14 15:57:12
【问题描述】:

我已经构建了一个包含 3 个项目的解决方案。一个 WCF 服务、一个实体框架模型和一个托管该服务的 Windows 窗体应用程序。

然后我有一个使用该服务的 WPF 客户端应用程序。

在 Visual Studio 2013 中调试服务主机应用程序按预期工作,我可以从 WPF 客户端使用服务。

但是,当我从调试目录中的 .exe 运行主机应用程序时,该服务没有运行。 Iget '服务已启动',没有例外。我以管理员身份运行 .exe 并以机器和域上的管理员身份登录服务器(Windows Server 2012):

 public partial class RegimesHost : Form
{
    public RegimesHost()
    {
        InitializeComponent();
        lblStatus.Text = string.Empty;
    }

    ServiceHost host;
    private void btnStart_Click(object sender, EventArgs e)
    {
        host = new ServiceHost(typeof(RegimesService));
        host.Open();
        lblStatus.Text = "Started...";
    }

    private void btnStop_Click(object sender, EventArgs e)
    {
        host.Close();
        lblStatus.Text = "Stopped...";
    }     
}

关于为什么该服务将在 Visual Studio 的调试内运行而不是从调试目录中的 .exe 运行,我在这里是否缺少一些明显的东西?

【问题讨论】:

  • 可能是位于调试文件夹中的 app.config 文件有问题?意味着您的服务正在运行但使用不同的端口/协议
  • 不要以为我在 VS 中更改 baseAddress 端口会引发异常。一切都在 VS 环境中运行,只是 bin 中的 .exe 在服务不运行时自行运行。我在模型项目中使用实体框架和另一台服务器上的数据库。也可以 ping 通。
  • 你能提供一些关于你的端点的细节吗?
  • 您发布的代码看起来像WinForm。您能否在主机运行时从您的客户端应用程序调用服务?
  • 是的,抱歉,这是一个小小的 winforms 应用程序。现在可以运行了,必须更改客户端端口。看起来windows会将应用程序分配给config.app中定义的端口以外的另一个端口,大概是因为调试模式已经占用了那个端口?

标签: c# .net wpf web-services wcf


【解决方案1】:

终于让服务运行起来了。

我必须在客户端的“添加服务引用”向导中使用下一个端口。这可能是因为调试模式使用 app.config 中定义的端口,因此当您单独运行应用程序时,该端口已指定给调试运行时,因此应用程序会使用下一个端口。

跨服务器调试这个问题很棘手,使用跟踪可能是个好主意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多