【问题标题】:C# GetRequestStream() outlook add-in "The operation has timed out"C# GetRequestStream() Outlook 加载项“操作已超时”
【发布时间】:2013-11-29 14:44:57
【问题描述】:

美好的一天。

在这个问题上我真的需要帮助。我在这里尝试了所有可能的选项。

我在使用 C# 的 Outlook 加载项中使用 REST API。该代码以一种方式将 Outlook 项目链接到 CRM 记录。加载项工作 100% 正常,但经过几次调用后,我不断收到错误消息“操作已超时”。

当我使用 Google Chrome 应用程序“高级 REST 客户端”时,我可以将相同的请求一个接一个地发布 50 次,而不会出现超时错误。

在加载项中,我使用 POST、GET 和 PATCH HttpWebRequest,但我得到了所有这些错误。错误发生在代码行 System.IO.Stream os = req.GetRequestStream();

方法如下:

public static string HttpPatch(string URI, string Parameters) 
{

var req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(URI);

    if (GlobalSettings.useproxy.Equals("true"))
    {
        req.Proxy = WebRequest.DefaultWebProxy;
        req.Credentials = new NetworkCredential(GlobalSettings.proxyusername,          GlobalSettings.proxypassword, GlobalSettings.proxydomain);
        req.Proxy.Credentials = new NetworkCredential(GlobalSettings.proxyusername,     GlobalSettings.proxypassword, GlobalSettings.proxydomain);
    }


req.Headers.Add("Authorization: OAuth " + GlobalSettings.token.access_token);
req.ContentType = "application/json";
req.Method = "PATCH";
byte[] data = System.Text.Encoding.Unicode.GetBytes(Parameters);
req.ContentLength = data.Length;
using (System.IO.Stream os = req.GetRequestStream())
{
    os.Write(data, 0, data.Length);
    os.Close();
}

WebResponse resp;

try
{
    resp = req.GetResponse();
}
catch (WebException ex)
{

    if (ex.Message.Contains("401"))
    {
    }
}
}

【问题讨论】:

    标签: c# rest outlook add-in outlook-addin


    【解决方案1】:

    我怀疑问题在于您没有处理 WebResponse。这意味着连接池认为该连接仍在使用中,并将等待响应被释放,然后再将其重新用于另一个请求。连接是获取请求流所必需的,除非终结器碰巧在有用的时间启动,否则它不会变得可用,因此会超时。

    只需使用响应更改您的代码以使用 using 语句 - 或者在您的情况下,使用 finally 块可能会更复杂一些,因为您在 try 块中分配它。 (我们无法真正看到您是如何使用响应的,因此很难提供示例代码。但从根本上说,您需要处理它。)

    【讨论】:

    • 太棒了!!多么快速的响应和简单的解决方案,100% 有效。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 2020-04-17
    • 2016-01-16
    • 1970-01-01
    • 2012-09-21
    • 2011-08-27
    • 1970-01-01
    相关资源
    最近更新 更多