Webservice在第三次通话后超时

时间:2015-03-10 09:45:15

标签: c# web-services microsoft-dynamics navision

我正在开发一个.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 ****";
        }

    }

0 个答案:

没有答案