C# 运行调试中的.exe时运行WCF服务库

C# 运行调试中的.exe时运行WCF服务库,c#,.net,wpf,wcf,C#,.net,Wpf,Wcf,当我通过visual studio运行使用WCF服务库的WPF时,我会在服务启动WCF服务库的同时启动WCF服务主机,但是,当我在调试文件夹中单击我的WPF的exe时,它不会启动,因为我认为下面的代码不起作用 try { host = new ServiceHost(typeof(Service1), new Uri("http://" + System.Net.Dns.GetHostName() + ":8733/DatabaseTransferWcfServiceLibaryMeth

当我通过visual studio运行使用WCF服务库的WPF时,我会在服务启动WCF服务库的同时启动WCF服务主机,但是,当我在调试文件夹中单击我的WPF的exe时,它不会启动,因为我认为下面的代码不起作用

try
{
    host = new ServiceHost(typeof(Service1), new Uri("http://" + System.Net.Dns.GetHostName() + ":8733/DatabaseTransferWcfServiceLibaryMethod/Service1/"));
    host.Open();
}catch(AddressAlreadyInUseException)
{
}

我尽量不使用服务引用。

我不是这方面的专家,但可能您缺少绑定。下面是我可以创建的最简单的示例,它在代码中托管和使用WCF服务(您需要添加对System、System.Runtime.Serializaton和System.ServiceModel的引用,否则,此代码就完成了)

使用系统;
使用System.Runtime.Serialization;
使用System.ServiceModel;
命名空间控制台应用程序1
{
班级计划
{
静态void Main(字符串[]参数)
{
//在单个类上创建主机
使用
(ServiceHost主机)
=新服务主机
(我的服务类型)
,新Uri(“http://localhost:1234/MyService/MyService")
)
){
//该单个类可以包含多个到的接口
//不同的服务,必须在此处添加
host.AddServiceEndpoint
(IMyService的类型)
,新的WSHttpBinding(SecurityMode.None)
//每个服务都可以有自己的URL,但如果为空,请使用
//默认值高于
,  ""
);
//打开主机以便可以使用它
host.Open();
//使用服务(此cuold位于另一个可执行文件中)
使用
(工厂频道)
=新工厂
(新的WSHttpBinding(SecurityMode.None)
,  "http://localhost:1234/MyService/MyService"
)
){IMyService myService=channel.CreateChannel();
Console.WriteLine(myService.GetValue());
}
//清理
host.Close();
}
}
}
[服务合同]
公共接口IMyService
{[OperationContract]int GetValue();
}
公共类MyService:IMyService
{public int GetValue()
{返回5;
}
}
}

好的,错误与我认为的大不相同,错误在于它运行在我的用户界面线程上,因此需要添加

[ServiceBehavior( UseSynchronizationContext = false)]

如果其他人有这个问题,我希望这能有所帮助。

我已经添加了绑定,但是它冻结了,在等效的“Console.WriteLine(myService.GetValue());”中没有响应@ZoomVirus在我发送的示例代码中是否冻结?当它冻结在您的等效代码中,处于无限冻结状态,或者超时时。是否有任何异常?当我在visual studio中运行调试时,它会超时,但如果我单击“等待它响应”,它将永远不会超时。您输入的示例代码也是如此。@ZoomVirus抱歉,我对这方面的了解不够,无法做出响应。我只知道我发送的代码对我有用。如果你不能创建自己的主机,你有IIS吗?您可以在那里托管WCF库。不幸的是,使用IIS不符合我的要求,但感谢您的帮助。
[ServiceBehavior( UseSynchronizationContext = false)]