WCF应用程序无法打开频道

我有客户端和主机简单的WCF应用程序。 整个WCF架构是默认的,客户端逻辑是在添加服务引用后由Visual Studio添加的。 应用程序工作很长时间,突然停止了今天的工作。 在debugging期间,我看到,问题是,客户端无法打开通道。 没有例外,debugging器只是不进入下一个执行步骤。 主机通常打开服务。 我没有改变任何代码。 我试图编写新的WCF应用程序,它不工作出于同样的原因。

谷歌没有帮助我。 我会很感激任何build议如何解决这个问题。 🙂

这里是我提到的应用程序代码的一部分:

[ServiceContract] public interface iClientsQueries { [OperationContract] resRegisterUser RegisterUser(reqRegisterUser request); } 

客户端:

 public class ClientLogic { User CurrentUser { get; set; } public ClientLogic(string phoneNumber) { client = new iClientsQueriesClient("WSHttpBinding_iClientsQueries"); CurrentUser = new User() { PhoneNumber = phoneNumber, IsRegistered = true }; } async public void RegisterUser() { var req = new reqRegisterUser() { QueryAuthor = CurrentUser }; resRegisterUser res; try { res = client.RegisterUser(req); notFinished = false; } catch (Exception ex) { notFinished = true; } } } 

主持人:

 [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] public class HostLogic : iClientsQueries { public void StartHostng() { Uri hostAddress = new Uri(UriAddress); try { host = new ServiceHost(this, hostAddress); host.AddServiceEndpoint(typeof(iClientsQueries), new WSHttpBinding(), "TestService"); ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); smb.HttpGetEnabled = true; host.Description.Behaviors.Add(smb); host.Open(); HostOn = true; } catch (Exception ex) { LogsWriter.WriteExceptionLog(ex); HostOn = false; host.Abort(); } } public void StopHosting() { if (host != null) host.Close(); HostOn = false; } public resRegisterUser RegisterUser(reqRegisterUser request) { // LOGIC HERE } } 

当这样的事情发生时,我通常会做的事情是在客户端和服务器上配置WCF消息日志记录,并希望出现。 在某些情况下,Windows事件日志包含可能有所帮助的日志条目。

要配置WCF消息日志记录,您需要按照此处所述更新您的App.config文件。

 <system.diagnostics> <sources> <source name="System.ServiceModel.MessageLogging"> <listeners> <add name="messages" type="System.Diagnostics.XmlWriterTracelistner" initializeData="c:\logs\messages.svclog" /> </listeners> </source> </sources> </system.diagnostics> <system.serviceModel> <diagnostics> <messageLogging logEntireMessage="true" logMalformedMessages="false" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="false" maxMessagesToLog="3000" maxSizeOfMessageToLog="2000"/> </diagnostics> </system.serviceModel>