在运行vb.net时......编码工作正常,我得到的输出低于错误...
Lambda参数'{parameter}'隐藏封闭块中的变量,先前定义的范围变量或查询表达式中隐式声明的变量。
如何解决此错误?
以下是代码:
Private Sub ButtonProductAdvertisingAPIItemLookup_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles ButtonProductAdvertisingAPIItemLookup.Click sender.Enabled = False
'Product Advertising API, ItemLookup: http://docs.aws.amazon.com/AWSECommerceService/2011-08-01/DG/ItemLookup.html
Dim ItemId(9) As String
ItemId(0) = System.Uri.EscapeDataString(TextBoxisbn1.Text)
ItemId(1) = System.Uri.EscapeDataString(TextBoxisbn2.Text)
ItemId(2) = System.Uri.EscapeDataString(TextBoxisbn3.Text)
ItemId(3) = System.Uri.EscapeDataString(TextBoxisbn4.Text)
ItemId(4) = System.Uri.EscapeDataString(TextBoxisbn5.Text)
ItemId(5) = System.Uri.EscapeDataString(TextBoxisbn6.Text)
ItemId(6) = System.Uri.EscapeDataString(TextBoxisbn7.Text)
ItemId(7) = System.Uri.EscapeDataString(TextBoxisbn8.Text)
ItemId(8) = System.Uri.EscapeDataString(TextBoxisbn9.Text)
ItemId(9) = System.Uri.EscapeDataString(TextBoxisbn10.Text)
' For Each ItemId As String In ItemIds()
Dim i As Integer = 0
System.Threading.Tasks.Parallel.ForEach(ItemIds, Sub(ItemId)
My.Settings.ItemId = ItemId
Dim MyREST As New SprightlySoftAWS.REST
Dim RequestURL(i) As String
RequestURL(i) = "https://webservices.amazon.com/onca/xml?Service=AWSECommerceService&Operation=ItemLookup&Version=2011-08-01"
RequestURL(i) += "&AWSAccessKeyId=AKIAJCA3UI55HFYAXQ6Q&SignatureVersion=2&SignatureMethod=HmacSHA256&Timestamp=" & Uri.EscapeDataString(DateTime.UtcNow.ToString("yyyy-MM-dd\THH:mm:ss.fff\Z"))
RequestURL(i) += "&AssociateTag=AKIAJCA3UI55HFYAXQ6Q"
RequestURL(i) += "&ResponseGroup=" & System.Uri.EscapeDataString("ItemAttributes,Large,OfferSummary,Offers,VariationSummary,Reviews")
RequestURL(i) += "&ItemId=" & System.Uri.EscapeDataString(ItemId)
RequestURL(i) += "&IdType=ISBN"
RequestURL(i) += "&SearchIndex=Books"
Dim RequestMethod As String
RequestMethod = "GET"
Dim SignatureValue As String
SignatureValue = MyREST.GetSignatureVersion2Value(RequestURL(i), RequestMethod, "", "8igixqKPKWTcsWxgWdqz+rVofSWIPcC3WynhEl1r")
RequestURL(i) += "&Signature=" & System.Uri.EscapeDataString(SignatureValue)
Dim RetBool As Boolean
RetBool = MyREST.MakeRequest(RequestURL(i), RequestMethod, Nothing)
Debug.Print("")
Debug.Print(MyREST.LogData)
Debug.Print("")
Dim Y As Integer
Dim ResponseMessage As String = ""
If RetBool = True Then
Dim MyXmlDocument As System.Xml.XmlDocument
Dim MyXmlNamespaceManager As System.Xml.XmlNamespaceManager
Dim MyXmlNode As System.Xml.XmlNode
Dim MyXmlNodeList As System.Xml.XmlNodeList
MyXmlDocument = New System.Xml.XmlDocument
MyXmlDocument.LoadXml(MyREST.ResponseString)
MyXmlNamespaceManager = New System.Xml.XmlNamespaceManager(MyXmlDocument.NameTable)
MyXmlNamespaceManager.AddNamespace("amz", "http://webservices.amazon.com/AWSECommerceService/2011-08-01")
MyXmlNodeList = MyXmlDocument.SelectNodes("amz:ItemLookupResponse/amz:Items/amz:Item", MyXmlNamespaceManager)
If MyXmlNodeList.Count = 0 Then
ResponseMessage = "Item not found."
Else
For Each ItemXmlNode As System.Xml.XmlNode In MyXmlNodeList
MyXmlNode = ItemXmlNode.SelectSingleNode("amz:ASIN", MyXmlNamespaceManager)
ResponseMessage += "Details of " & MyXmlNode.InnerText
ResponseMessage += vbCrLf
ResponseMessage += vbCrLf
MyXmlNode = ItemXmlNode.SelectSingleNode("amz:ItemAttributes/amz:Title", MyXmlNamespaceManager)
ResponseMessage += "Title = " & MyXmlNode.InnerText
ResponseMessage += vbCrLf
MyXmlNode = ItemXmlNode.SelectSingleNode("amz:MediumImage/amz:URL", MyXmlNamespaceManager)
ResponseMessage += "Image = " & MyXmlNode.InnerText
ResponseMessage += vbCrLf
MyXmlNodeList = ItemXmlNode.SelectNodes("amz:ItemAttributes/amz:Author", MyXmlNamespaceManager)
If IsNothing(MyXmlNodeList) = False Then
ResponseMessage += "Author = "
For Each MyXmlNode In MyXmlNodeList
ResponseMessage += MyXmlNode.InnerText & ", "
Next
End If
ResponseMessage += vbCrLf
MyXmlNode = ItemXmlNode.SelectSingleNode("amz:ItemAttributes/amz:ListPrice/amz:FormattedPrice", MyXmlNamespaceManager)
ResponseMessage += "ListPrice = "
If IsNothing(MyXmlNode) = False Then
ResponseMessage += MyXmlNode.InnerText
End If
ResponseMessage += vbCrLf
MyXmlNode = ItemXmlNode.SelectSingleNode("amz:Offers/amz:Offer/amz:OfferAttributes/amz:Condition", MyXmlNamespaceManager)
ResponseMessage += "Condition = " & MyXmlNode.InnerText
ResponseMessage += vbCrLf
MyXmlNode = ItemXmlNode.SelectSingleNode("amz:Offers/amz:TotalOffers", MyXmlNamespaceManager)
ResponseMessage += "TotalOffers = " & MyXmlNode.InnerText
ResponseMessage += vbCrLf
MyXmlNode = ItemXmlNode.SelectSingleNode("amz:OfferSummary/amz:TotalNew", MyXmlNamespaceManager)
ResponseMessage += "TotalNew = " & MyXmlNode.InnerText
ResponseMessage += vbCrLf
MyXmlNodeList = ItemXmlNode.SelectNodes("amz:OfferSummary/amz:LowestNewPrice/amz:FormattedPrice", MyXmlNamespaceManager)
ResponseMessage += "LowestNewPrice = "
Y = 0
For Each MyXmlNode In MyXmlNodeList
If Y < 25 Then
ResponseMessage += "" & MyXmlNode.InnerText & " "
End If
Next
ResponseMessage += vbCrLf
MyXmlNode = ItemXmlNode.SelectSingleNode("amz:OfferSummary/amz:TotalUsed", MyXmlNamespaceManager)
ResponseMessage += "TotalUsed = " & MyXmlNode.InnerText
ResponseMessage += vbCrLf
MyXmlNode = ItemXmlNode.SelectSingleNode("amz:OfferSummary/amz:LowestUsedPrice/amz:FormattedPrice", MyXmlNamespaceManager)
ResponseMessage += "LowestUsedPrice = "
If IsNothing(MyXmlNode) = False Then
ResponseMessage += "" & MyXmlNode.InnerText
Else
ResponseMessage += "0"
End If
ResponseMessage += vbCrLf
'MyXmlNode = ItemXmlNode.SelectSingleNode("amz:SalesRank", MyXmlNamespaceManager)
'ResponseMessage += "SalesRank = " & MyXmlNode.InnerText
'ResponseMessage += vbCrLf
Next
End If
DialogOutput.Text = "Success"
DialogOutput.TextBoxOutput.Text += vbCrLf & ResponseMessage & vbCrLf
Else
ResponseMessage = FormatLogData(MyREST.RequestURL, MyREST.RequestMethod, MyREST.RequestHeaders, MyREST.ResponseStatusCode, MyREST.ResponseStatusDescription, MyREST.ResponseHeaders, MyREST.ResponseStringFormatted, MyREST.ErrorNumber, MyREST.ErrorDescription)
DialogOutput.Text = "Error"
DialogOutput.TextBoxOutput.Text = ResponseMessage
DialogOutput.ShowDialog(Me)
DialogOutput.Dispose()
End If
i = i + 1
End Sub)
'Next
DialogOutput.ShowDialog(Me)
ClearTextBox(Me)
sender.Enabled = True
End Sub
错误显示在下面的行中(错误显示在ItemId变量中):
System.Threading.Tasks.Parallel.ForEach(ItemIds, Sub(ItemId)
我已经更新了额外的代码。任何人检查并帮助我?如何解决这个问题?我仍然得到错误..
答案 0 :(得分:0)
鉴于所描述的错误,包括在评论中:
ItemId
。ItemIds
是IEnumerable(Of String())
,或同等的。以及其他一些评论:
End Sub
和)
。&=
,就像您已经使用&
进行连接一样。您的额外代码无助于解决您的问题,但它确实强调您需要进行更多审核。例如,您声明了一个i+1
RequestURL
String
的数组,然后只使用其中的最后一个,并且还注意这些是并行执行的{{1}实际发生时几乎可以是任何值。
为了帮助解决您的问题,我们需要上面的代码。