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 のエラー: 同じキーを持つ項目が既に追加されています。 .MakeRequest(文字列アドレス API)".
呼び出している回数と、ロガーで確認できるエラーの数が同じである理由を知りたいです。
今、私は含めました
最後に {
r.Abort();
}
それは問題を解決できますか?