gpt4 book ai didi

c# - WCF:客户端发送值但服务器收到空字符串

转载 作者:太空宇宙 更新时间:2023-11-03 11:33:12 25 4
gpt4 key购买 nike

看起来服务器端无法接收到传递的值,requestVersion.Ping 为空。

   namespace Communication
{
public class DataForRequestVersion
{
public string Ping = "";
}

public class DataForResponseVersion
{
public string Pong = "";
public string Version = "";
}
}

[ServiceContract]
public interface IService
{
[OperationContract]
Communication.DataForResponseVersion Version(Communication.DataForRequestVersion requestVersion);

}

//Server
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class ServiceImplementation : WCFSimple.Contract.IService
{
public Communication.DataForResponseVersion Version(Communication.DataForRequestVersion requestVersion)
{

//Here requestVersion.Ping is EMPTY

Communication.DataForResponseVersion responseVersion = new Communication.DataForResponseVersion();
responseVersion.Pong = requestVersion.Ping;
responseVersion.Version = "MyApp v" + Settings.version;

return responseVersion;
}

}

//Client makes a request here
Communication.DataForRequestVersion requestVersion = new Communication.DataForRequestVersion();
requestVersion.Ping = DateTime.Now.ToString(Settings.DayTimePreciseFormat);

//Here requestVersion.Ping has a value

Communication.DataForResponseVersion responseVersion =
Service.Version(requestVersion);

我错过了什么?

更新

我的应用程序运行良好,双方通过自定义数据类进行通信,没有任何问题。但是我试图修改测试客户端,它只发送-接收当前时间作为字符串并使其参数有点复杂;从字符串到自定义数据类。主解决方案的应用程序可以发送版本请求并接收答案。所以我认为我的小测试客户端有问题。

My debug scren

这是 pastebin code :

第二次更新:

有些版主不允许我回答我自己的问题,我不知道为什么,我发现了一个非常相似的问题,那个人也回答了他自己的问题。下次我解释原因时帮助别人;我使用 namespace 而不是创建 class...我修复了:

//namespace Communication
public class Communication

最佳答案

您需要使用 [DataContract] 属性标记您的请求(和响应)类,并使用 [DataMember] 属性标记它们的属性:

[DataContract]
public class DataForRequestVersion
{
[DataMember]
public string Ping = "";
}

关于c# - WCF:客户端发送值但服务器收到空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7144848/

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