服务器端接口:
[OperationContract]
[WebGet(UriTemplate = "GetCardInfoByCardNumber/?cardNumber={cardNumber}&SerialNumber={SerialNumber}&token={token}", ResponseFormat = WebMessageFormat.Json)]
IList<Cards> GetCardInfoByCardNumber(string cardNumber, string SerialNumber, string token);
服务器端实现:
public IList<Cards> GetCardInfoByCardNumber(string cardNumber, string SerialNumber, string token)
{
if (BaseClass.HasPermission(token))
return cm.GetCardInfoByCardNumber(cardNumber, SerialNumber);
else
return null;
}
客户方:
class Program
{
static void Main(string[] args)
{
TestResWCF();
Console.ReadLine();
}
static List<Cards> TestResWCF()
{
List<Cards> a = null;
string ServiceUri = "http://192.168.15.18:8089/GetCardInfoByCardNumber/?cardNumber=HH-120109-017&SerialNumber=&token=123456";
WebClient proxy = new WebClient();
proxy.Encoding = Encoding.UTF8;
proxy.DownloadStringCompleted += new DownloadStringCompletedEventHandler
(
(s, e) =>
{
Stream stream = new MemoryStream(Encoding.Unicode.GetBytes(e.Result));
DataContractJsonSerializer obj = new DataContractJsonSerializer(typeof(List<Cards>));
a = obj.ReadObject(stream) as List<Cards>;
}
);
proxy.DownloadStringAsync(new Uri(ServiceUri));
return a;
}
List<Cards>
总是返回空字符串!如何返回数据?非常感谢你!
你有什么例子吗?抱歉我的英文不好
答案 0 :(得分:0)
您可以分享“卡片”和“卡片”类的代码吗?
我非常肯定,它很可能没有正确装饰[DataContract]和[DataMember]。您可能已使用[DataContract]修饰了类型,但忘记使用[DataMember]注释所需的成员。或者,您可能根本没有装饰它们,而在幕后也会发生其他事情。在99%的情况下,错误装饰或不正确的装饰或错误初始化是发生此错误的原因。
如果你确实正确地装饰它,可能还有其他一些问题。仅仅通过您提供的详细信息很难100%确定,因此我将启用跟踪以生成跟踪日志(然后您可以使用SvcTraceViewer查看/共享)并打开调试异常(通过启用includeExceptionDetailInFaults设置) )。