C# apicontroller вызывается дважды, когда getasync вызывает его только один раз

Здравствуйте, я столкнулся с очень интересной ошибкой, и не могу понять, почему это происходит. Я вызываю метод GetAllDocuments() для api из моего другого проекта через метод GetAsync httpclient. Но проблема в том, что GetAllDocuments возвращается, а затем вызывается снова! GetAsync возвращает результат после двойного возврата GetAllDocuments.

Вот вызывающий метод:

public static async Task<Document> GetAllDocuments()
    {
        try
        {

            var response =  _client.GetAsync("api/documents/GetAllDocuments").Result;
            response.Content.LoadIntoBufferAsync().Wait();
            response.EnsureSuccessStatusCode();
            return await response.Content.ReadAsAsync<Document>(new[] { new JsonMediaTypeFormatter() }); ;
            // Return the URI of the created resource.
        }
        catch (Exception ex)
        {
            return null;
        }
    }

Метод ApiController:

[HttpGet]
    public List<Document> GetAllDocuments()
    {
        lock (_lock)
        {
            _documentsRepository = DocumentsRepository.Instance;
            var result = _documentsRepository.GetDocuments();

            return result;
        }
    }

WebConfig:

public static class WebApiConfig
{
    private static HttpSelfHostServer _server;

    public static void Run(string port)
    {
        var config = new HttpSelfHostConfiguration($"http://localhost:{port}");//"http://localhost:8080");

        config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

        config.Routes.MapHttpRoute(
            "API Default", "api/{controller}/{id}",
            new { id = RouteParameter.Optional });

        config.Routes.MapHttpRoute(
            "newdocument", "api/documents/newdocument/{document}",new { document = RouteParameter.Optional });

        config.Routes.MapHttpRoute(
            "GetAllDocuments", "api/documents/GetAllDocuments/");

        config.MaxReceivedMessageSize = int.MaxValue;;
        config.MaxBufferSize = int.MaxValue;
        _server = new HttpSelfHostServer(config);
        _server.OpenAsync();

    }

    public static void Stop()
    {
        _server?.CloseAsync();
    }
}

0 ответов

Другие вопросы по тегам