我正在努力帮助儿子升级我去年为他建立的网站。他想实现Amazon Simple Pay。我现在很接近,但是有一个我不知道如何解决的错误。这是用C#完成的ASP.Net网站。我是未经培训(自学)的开发人员,所以请简单地说。 ;-)
在ASP.Net中,在表单中包含表单是不合法的,我需要执行表单POST。在线上有一个漂亮的教程,展示了如何做到这一点。如果您有兴趣查看,则该网址为http://weblogs.asp.net/hajan/archive/2011/04/20/amazon-simple-pay-in-asp-net.aspx。
必须对交易进行“签名”,Amazon提供一个SignatureUtils类来完成此任务。在那堂课中,我称之为:
public static string signParameters(IDictionary<String, String> parameters, String key, String HttpMethod, String Host, String RequestURI, String algorithm)
杀死我的是IDictionary参数。我需要传递的是我使用的这个ListParams NameValueCollection:
public System.Collections.Specialized.NameValueCollection ListParams = new System.Collections.Specialized.NameValueCollection();
它给我下面的错误,因为它无法将NameValueCollection转换为IDictionary。我尝试显式转换它,但没有任何乐趣。我该如何解决?
Error: Argument 1: cannot convert from 'System.Collections.Specialized.NameValueCollection' to 'System.Collections.Generic.IDictionary<string,string>'
最佳答案
您可以使用Cast
做到这一点:
IDictionary<string, string> dict = ListParams.Cast<string>()
.ToDictionary(p => p, p => ListParams[p]);