Поэтому я пытаюсь использовать HttpWebRequest в моем плагине C# для Revit (программное обеспечение BIM), чтобы отправить запрос в мой API. Но каждый раз, когда я пытаюсь это сделать, это занимает намного больше времени, чем запрос в Chrome / Firefox / Postman.
Если я отправляю свой запрос с помощью Postman, это занимает от 1 до 1,5 секунд. Но если я отправлю его в своем заявлении, это займет от 21 до 21,5 секунд. Похоже, что HttpWebrequest создал какое-то время ожидания, но я не могу понять, почему это так.
Мой код:
static public string Get(string baseURI, Dictionary<string, string> requestParameters)
{
ServicePointManager.UseNagleAlgorithm = false;
ServicePointManager.DefaultConnectionLimit = 15;
string requestURI = baseURI;
if (requestURI.Length != 0)
{
foreach (KeyValuePair<string, string> parameter in requestParameters)
{
if (requestURI[requestURI.Length - 1] != '?')
{
requestURI = requestURI + '&';
}
requestURI = requestURI + parameter.Key + "=" + parameter.Value;
}
}
HttpWebRequest request = WebRequest.Create(requestURI) as HttpWebRequest;
request.Method = "GET";
string results = string.Empty;
request.Proxy = null;
request.KeepAlive = false;
HttpWebResponse response;
using (response = request.GetResponse() as HttpWebResponse)
{
// Get the response stream
StreamReader reader = new StreamReader(response.GetResponseStream());
results = reader.ReadToEnd();
reader.Close();
response.Close();
}
return results;
}
I ' мы попробовали следующее:
Использование RestSharp
Использование HttpWebRequest
Отправка двух запросов ( то же самое для двух разных запросов), где второй запрос занимает всего 1,5 секунды, как и должно быть.
Я пробовал request.Proxy = null; / ServicePointManager.UseNagleAlgorithm = false; / request.KeepAlive / ServicePointManager.DefaultConnectionLimit = 15;
Я не могу думать ни о чем другом, и отладчик не дает мне никакой полезной информации о том, что он делает в этих 20 секунд.