【发布时间】:2013-04-24 20:54:57
【问题描述】:
我正在努力帮助我儿子升级我去年为他建立的网站。他想实施 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。
交易必须“签名”,亚马逊提供了一个 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>'
【问题讨论】:
-
看看:stackoverflow.com/a/5600582/254973 好像答案有代码可以把东西送到
IDictonary -
Steven,那篇文章应该对我有用,但 .ToDictionary 因其保护级别而给我一个无法访问的错误。它是公开的,所以我不确定是什么导致了这个错误。
标签: c# asp.net namevaluecollection