Вызов внутренней (конечной точки) функции в WebAPI - PullRequest
0 голосов
/ 23 мая 2018

Я использую Hangfire для выполнения повторяющихся заданий в своем веб-API и использую System.Web.HttpContext.Current.Server.MapPath в функции "RoutineMethod".

Но проблема в том, что объект выбрасывает нулевой объектисключение.Я искал проблему и обнаружил, что повторяющиеся задания не используют потоки http, они используют фоновые потоки.

Теперь, чтобы решить эту проблему, мне нужно вызвать внутреннюю (конечную точку) с помощью httpclient.

Но для этого мне нужно дать URL веб-API (для генерации URI).Так есть ли другой способ вызова внутренней функции с использованием httpclient.

Мой текущий код:

public static async Task<IHttpActionResult> RoutineTask()
        {
            //It was like this before.
            //await new DemoController().RoutineMethod();
            //await new DemoController().RoutineMethod2();

            //I am planning to do this.
            using (var client = new HttpClient())
            {
                //But I need to give URI which I don't think is a good idea.
                var uri = new Uri("http://localhost/DemoApp/api/DemoController/RoutineMethod");
                await client.GetAsync(uri);

            }

            return new DemoController().Ok();
        }

1 Ответ

0 голосов
/ 23 мая 2018

Короткий ответ - нет.HttpClient, как следует из его названия, требует подключения http.

Нет проблем с запахом при хранении информации о подключении службы в файле конфигурации.

Однако, если развернуть комментарий Nkosi, он выглядит так:что, поскольку ваш код может создать экземпляр DemoController, он должен иметь ссылку на проект этого контроллера или даже находиться в том же проекте.Я бы извлек интересный код в библиотеку или службу, на которую могут ссылаться все области, нуждающиеся в информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...