Клиент C # Api Невозможно установить соединение, поскольку целевая машина активно отказалась от него - PullRequest
0 голосов
/ 24 мая 2018

У меня есть клиент C #, который вызывает REST API и регистрирует мои данные.

Мой код клиента очень прост:

public class Tester
{
    private readonly string _baseUri = "URI";
    private readonly string _createUpdateLogUri = "v1.0/log";
    private readonly HttpClient _httpClient;
    private readonly MediaTypeHeaderValue _textPlainContent = MediaTypeHeaderValue.Parse("text/plain");
    private readonly Encoding _encoding = Encoding.GetEncoding("ISO-8859-1");

    public Tester()
    {
        _httpClient = new HttpClient
        {
            BaseAddress = new Uri(_baseUri),
            Timeout = new TimeSpan(0, 5, 0)
        };

    }

    public void Log(Head head, string ticket, string clientIp, string clientName, string headIp, string headName)
    {


        var main = new Main
        {
            Ticket = Convert.ToBase64String(_encoding.GetBytes(ticket)),
            Application = head.ApplicationCaller,
            ClientApplication = head.ApplicationCode,
            ClientIp = clientIp,
            ClientName = clientName,
            ClientUser = head.User,
            Command = head.Command,
            HeaderIp = headIp,
            HeaderName = headName,
            HeaderTimestamp = DateTime.UtcNow,
            Module = head.Module,
            Guid = head.CallIdentifier,
            CreatedTimestamp = DateTime.UtcNow,

        };


        var mainToStringContent = ObjectToStringContent(main);

        var headToXml = XmlHelper<Head>.SerializeObjectToXml(head);

        var headToBytes = _encoding.GetBytes(headToXml);

        var headContent = new ByteArrayContent(headToBytes, 0, headToBytes.Length);
        headContent.Headers.ContentType = _textPlainContent;

        var form = new MultipartFormDataContent
        {
            {
                headContent, "header", "head.txt"
            },
            {
                mainToStringContent, "main"
            }
        };

        try
        {
            var result = _httpClient.PostAsync(_createUpdateLogUri, form).Result;
        }
        catch (SocketException e)
        {
            Console.WriteLine(e);
        }
        catch (Exception e)
        {
            Console.WriteLine(e); 
        }

    }

    private StringContent ObjectToStringContent<T>(T myObject)
    {
        var jsonSettings = new JsonSerializerSettings
        {
            NullValueHandling = NullValueHandling.Ignore
        };

        var objectToJson = JsonConvert.SerializeObject(myObject, Formatting.Indented, jsonSettings);

        return new StringContent(objectToJson, _encoding);
    }
}

Чтобы проверить, что вызовы успешны, я собираю трафик с помощьюfiddler, и когда клиент выполняет больше вызовов, в некоторых случаях (например, 4/100) я получаю эту ошибку.

[Fiddler] Не удалось установить соединение с URI.Ошибка: ConnectionRefused (0x274d).System.записано.
Как я могу решить эту проблему ??Мой код или трафик на моем сервере?Заранее спасибо за ваши ответы.

...