【发布时间】: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