Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将WCF服务返回的字符串散列到客户端_C#_Asp.net Mvc_Wcf_Web Services - Fatal编程技术网

C# 如何将WCF服务返回的字符串散列到客户端

C# 如何将WCF服务返回的字符串散列到客户端,c#,asp.net-mvc,wcf,web-services,C#,Asp.net Mvc,Wcf,Web Services,我有一个服务,可以获得一个卡帐号(16位)。一个网站(MVC)将调用该服务,然后返回一张包含账号的卡 由于账号是机密信息,我必须只将卡账号的最后四位数字返回到网站,但在服务内部,必须保留完整的账号 我该怎么做呢?在您的服务中,您不能这样做吗: 使用字典存储卡的哈希值和卡号: var cards = new Dictionary<int, string>(); var cardNumber = "1234123412341234" cards.Add(cardNumber.GetH

我有一个服务,可以获得一个卡帐号(16位)。一个网站(MVC)将调用该服务,然后返回一张包含账号的卡

由于账号是机密信息,我必须只将卡账号的最后四位数字返回到网站,但在服务内部,必须保留完整的账号


我该怎么做呢?

在您的服务中,您不能这样做吗:

使用字典存储卡的哈希值和卡号:

var cards = new Dictionary<int, string>();
var cardNumber = "1234123412341234" 

cards.Add(cardNumber.GetHashCode(), cardNumber);
var cards=newdictionary();
var cardname=“12341234112341234”
添加(cardNumber.GetHashCode(),cardNumber);

这是一个简单的解决方案,但还有很多未知数:您的服务是否应该是无状态的,如果您需要持久化字典,但可能是因为这个问题的正确解决方案是使用某种缓存系统,例如memcache。

您的服务从何处获得卡号?MVC应用程序是否需要使用完整的帐号呼叫服务?或者它只是基于其他非敏感信息请求有关该卡的信息?它不需要完整的账号,只需要最后四个。完整的帐号必须留在服务中,因为我需要它用于服务中的其他方法,如验证。最后四个方法在MVC应用程序中仅用于显示目的。这些方法是从MVC应用程序调用的吗?如果是,MVC应用程序是否有其他标识信息可供服务用于获取完整帐号?Marco下面的解决方案是一种方法,但是有可能会发生哈希代码冲突,所以我想看看是否还有另一条信息保证是唯一的(比如客户号之类的)。是的,这些方法是从MVC应用程序调用的。有,卡号。是的,我的服务是无状态的。。我要试试这个解决办法。。谢谢两个不同值的哈希代码可能相同-如果OP在字典中存储大量卡片,这将导致重复密钥异常。但如果使用更好的哈希算法,则不太可能。这只是一个简单的想法,让op从何处开始。