У меня есть система управления заказами, которая отправляет электронные письма через внешнюю систему. Доступ к внешней системе осуществляется через http-вызовы. Управление заказами состоит в основном из 3 проектов: библиотека классов, web api2 и приложение mvc. В библиотеке классов находится сервис для взаимодействия с системой электронной почты. Я связал все свои зависимости, используя Autofa c. Я думаю о создании httpclient в проекте web api, чтобы он передавался в библиотеку классов. В ASP. NET ядре это возможно, но я не уверен, как это сделать. net 4.8.
Для контекста сценарий выглядит следующим образом: Пользователь будет размещать заказы с помощью приложения mvc, которое вызывает веб-API. Веб-интерфейс API просто предоставляет конечные точки для всех логи c в библиотеке классов. Когда пользователь размещает заказ, он должен получить электронное письмо с деталями заказа. Библиотека классов вызывает внешнюю систему для отправки электронной почты. Библиотека классов имеет интерфейс IMessagingService, который имеет один метод SendEmailAsyn c. Для реализации этой службы MessagingService требуется httpclient
IMessagingService:
public interface IMessagingService
{
Task SendEmailAsync(string email, string message);
}
Служба сообщений:
public class MessagingService : IMessagingService
{
private readonly HttpClient _httpClient;
public MessagingService(HttpClient httpClient)
{
_httpClient = httpClient;
}
public async Task SendEmailAsync(string email, string message)
{
await _httpClient.PostAsJsonAsync(/*content*/);
}
}
Web API Global.asax.cs:
public class WebApiApplication : System.Web.HttpApplication
{
internal static HttpClient _httpClient;
protected void Application_Start()
{
//Removed other lines
Uri baseUri = new Uri("");
_httpClient = new HttpClient
{
BaseAddress = baseUri
};
_httpClient.DefaultRequestHeaders.ConnectionClose = false;
_httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
ServicePointManager.FindServicePoint(baseUri).ConnectionLeaseTimeout = 60 * 1000;
}
}
Autofa c конфигурация:
builder.RegisterType<MessagingService>()
.WithParameter("httpClient", WebApiApplication._httpClient)
.As<IMessagingService>()
.InstancePerRequest();
Возможно ли передать httpclient, созданный в Global.asax.cs, в библиотеку классов через Autofa c? Любые рекомендации?
NB. Сейчас я не могу перейти на ASP. NET core.