gpt4 book ai didi

.net - Wcf 应用程序无法打开 channel

转载 作者:可可西里 更新时间:2023-11-01 10:44:45 26 4
gpt4 key购买 nike

我有一个带有客户端和主机的简单 Wcf 应用程序。整个 Wcf 架构是默认的,客户端逻辑是在添加服务引用后由 Visual Studio 添加的。应用程序运行良好很长一段时间,今天突然停止工作。在 debuggin 期间,我看到问题是,客户端无法打开 channel 。没有异常(exception),调试器只是不进入下一步执行。主机照常打开服务。我没有更改代码中的任何内容。我尝试编写新的 Wcf 应用程序,但由于同样的原因它没有工作。

Google 没有帮助我。如果有任何建议如何解决这个问题,我将不胜感激。 :)

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

[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 文件 here .

<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="messages"
type="System.Diagnostics.XmlWriterTraceListener"
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>

关于.net - Wcf 应用程序无法打开 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31002467/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com