我正在开发一个.NET插件,它将Microsoft Dynamics Nav 2013中的一些数据转换为Json,并将其发送到客户端服务器上的Web服务。
web服务成功传输前两次我调用send方法但在第三次调用时我收到超时。
我搜索了互联网,发现这是由于没有正确关闭网络响应,但我似乎无法使它工作。
以下代码是我发送方法的轻微修改版本,用于显示我的问题。
也许你们其中一个人可以确定导致第三次连续呼叫超时的问题?
public string SendData(string schoolName)
{
var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://" + schoolName + ".*****.dk/api/v2/stays.json");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = JsonConvert.SerializeObject(container);
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
HttpWebResponse httpResponse = null;
try
{
httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
string statusCode;
return statusCode = httpResponse.StatusCode + " " + "Eleven blev sendt til ******";
}
catch (Exception e)
{
throw e;
}
finally
{
if (httpResponse != null)
{
httpResponse.Close();
}
}
}
}
我已经尝试按照评论建议简化代码,但问题仍然存在。代码现在看起来像这样:
public string SendData(string schoolName)
{
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("https://" + schoolName + ".****.dk/api/v2/stays.json");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = JsonConvert.SerializeObject(container);
streamWriter.Write(json);
}
using(HttpWebResponse httpResponse = (HttpWebResponse)httpWebRequest.GetResponse())
{
string statusCode;
return statusCode = httpResponse.StatusCode + " " + "Eleven blev sendt til ****";
}
}