我正在使用 Web 服务(.asmx)中的以下代码调用 WEB API 调用。
Server.ScriptTimeout = 3600;
return util.util.Settle(ids, userName, userPwd, userBelongCountry);
Settle 方法调用 MakeRequest(),如下所示:
public Dictionary<string, string> MakeRequest(string addressAPI)
{
HttpWebRequest r=null;
try
{
r = (HttpWebRequest)WebRequest.Create(addressAPI);
r.Method = "Get";
HttpWebResponse res = (HttpWebResponse)r.GetResponse();
Stream sr = res.GetResponseStream();
StreamReader sre = new StreamReader(sr);
var s = sre.ReadToEnd();
sre.Close();
XDocument doc = XDocument.Parse(s);
foreach (XElement element in doc.Descendants().Where(p => p.HasElements == false))
{
int keyInt = 0;
string keyName = element.Name.LocalName;
while (!this.dataDictionary.ContainsKey(keyName))
{
keyName = element.Name.LocalName + "_" + keyInt++;
this.dataDictionary.Add(keyName, element.Value);
}
}
return this.dataDictionary;
}
catch (Exception ex)
{
SystemLogWebCom.Error("Error in WEBAPI call" + ex.ToString());
return null;
throw ex;
}
}
问题:如果发生任何异常,WEB API 会被连续调用大约 15000+ 次。它应该执行一次并返回。
记录器中记录的错误:“WEBAPI callSystem.ArgumentException 中的错误:已添加具有相同键的项目。在 System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) at WebAPICommunicator.Utility .MakeRequest(字符串地址API)”。
我想知道为什么它调用了这么多次,并且我在 Logger 中看到的错误数量相同。
现在我已经包括
最后 {
r.Abort();
}
它能解决问题吗?