如何通过错误处理有效地处理WCF服务
在WCF服务中抛出错误后,我不断收到此错误:如何通过错误处理有效地处理WCF服务,wcf,c#-4.0,error-handling,wcf-client,Wcf,C# 4.0,Error Handling,Wcf Client,在WCF服务中抛出错误后,我不断收到此错误: 通信对象System.ServiceModel.Channels.ServiceChannel无法用于通信,因为它处于故障状态。 服务使用 抛出新的FaultException(新的DatabaseFault(e.Message)) 我如何处理这个问题,而不需要每次都重新启动客户端和服务 我使用的是WCF 4.0,C# 编辑1:我对WCF服务使用net.tcp绑定 编辑2:我想要一种有效的方式来使用WCF。这与约翰·S所说的无关 编辑3:我的代码有效
通信对象System.ServiceModel.Channels.ServiceChannel无法用于通信,因为它处于故障状态。
服务使用抛出新的FaultException(新的DatabaseFault(e.Message))代码>
我如何处理这个问题,而不需要每次都重新启动客户端和服务
我使用的是WCF 4.0,C#
编辑1:我对WCF服务使用net.tcp绑定
编辑2:我想要一种有效的方式来使用WCF。这与约翰·S所说的无关
编辑3:我的代码有效。但我认为它没有像它应该的那样运行(它的设计方式)
这是承载我的服务的控制台应用程序:
using (ServiceHost host = new ServiceHost(typeof(AuctionService)))
{
Console.WriteLine("AuctionWCF.TestHost Started");
host.AddServiceEndpoint(
typeof(IAuctionService),
new NetTcpBinding(),
"net.tcp://localhost:9000/AuctionWcfEndPoint");
host.Open();
Console.WriteLine("AuctionWCF.TestHost listens for requests");
Console.ReadLine();
}
这是客户:
AuctionService = new ChannelFactory<IAuctionService>(
new NetTcpBinding(),
new EndpointAddress("net.tcp://localhost:9000/AuctionWcfEndPoint")).CreateChannel();
AuctionService=newchannelfactory(
新的NetTcpBinding(),
新端点地址(“net。tcp://localhost:9000/AuctionWcfEndPoint))创建通道();
我做错什么了吗?你使用的是ChannelFactory吗?如果是这样,则显示了一个ChannelFactoryManager的示例,该示例对我非常有用。这是一个非常好的方法,这就是我想要发现的:
我也从diggingforfire的答案中找到了一些好的部分
找到了一个可以作为最佳实践的好答案这是如何无效的可能重复?另外,我刚刚确定了你的确切问题。为什么你不这么认为?我不想每次打电话给WCF都打开频道。我希望每次都使用相同的频道,如果它无法启动另一个或其他频道。我刚开始使用WCF,我想了解一些关于这个问题的策略建议:首先,让代码正常工作。接下来,让你的代码尽可能快地工作。您正在进行预优化,很可能会使您的代码非常有效地中断。虽然该语句本身是正确的,但我不确定它是否适用于这里。我不会在预优化下分享你的工厂或渠道故障。