У меня есть приложение MVC 5, чей back-end является веб-API. Для каждого запроса на мой сервер мне нужно предоставить пользовательский агент, который я могу получить в методе действий контроллера, например var UserAgent = Request.UserAgent.ToString();
, и передать его потом в другом классе (Controller => Service => HttpRequester => XXXHttpClient) и, наконец, использовать в реальном запросе в XXXHttpClient класс, но я думаю, что может быть лучший способ добиться того же. Я попытался это сделать, но не нашел ничего подходящего, так что кто-нибудь может мне помочь, что было бы лучше. Если я хочу получить пользовательский агент непосредственно в классе XXXHttpClient, вместо того, чтобы впоследствии его передавать.User-Agent в приложении mvc 5
0
A
ответ
1
Немного о широком вопросе с множеством возможных ответов.
Передача данных через все слои обычно не очень хорошо.
Что бы я сделал, это создать фильтр действий MVC, который захватывает пользовательский агент и устанавливает его на объект. Класс объекта может быть таким:
public class RequestContext
{
public string UserAgent { get; set; }
}
Используйте свою инфраструктуру инъекции зависимостей, чтобы вводить эту информацию за один раз. Тогда фильтр действий и слой, который зависит от данных, будут использовать один и тот же экземпляр, позволяя вам получать данные на любой слой, который ему нужен.
Другой вариант, который использует статическое свойство:
HttpContext.Current.Request.UserAgent
большую производительность, легче читать, но ниже тестируемость :)
Смежные вопросы
- 1. Получить useragent в контроллере laravel 5 php
- 2. Локализация в веб-приложении ASP.NET MVC 5
- 3. asp.net MVC 5 Ошибка сервера в приложении «/»
- 4. MVC 5, два провайдера SiteMap в приложении
- 5. Реализация поддомена В приложении MVC 5
- 6. SSRS с MVC 5
- 7. MethodAccessException в приложении Asp.net mvc-5 при загрузке на сервер
- 8. Задача не работает в приложении ASP.NET MVC 5
- 9. Использование углового JS в существующем приложении MVC 5
- 10. Как настроить Autofac и SignalR в приложении MVC 5
- 11. Ссылки на браузеры - Непрерывные вызовы Signalr в приложении MVC 5
- 12. Как обрабатывать аутентификацию в приложении с несколькими арендаторами MVC 5
- 13. Как загрузить файлы в приложении Asp.net MVC 5
- 14. Как показать полное имя в приложении ASP.NET MVC 5?
- 15. Попытка изменить маршрутизацию в моем приложении MVC 5
- 16. Лучший способ минимизировать html в приложении asp.net mvc 5
- 17. Обнаружение истечения сеанса в приложении Asp.Net MVC 5 Razor
- 18. Models.ApplicationDbContext для всех моделей в приложении Asp.Net MVC 5?
- 19. Внедрить аутентификацию OWIN в существующем приложении MVC 5
- 20. Application_Start(), вызываемый дважды в приложении MVC 5, содержащем IIS7.5
- 21. Где или когда регистрировать исключения в приложении MVC 5
- 22. Как аутентифицировать пользователя IIS .NET в приложении ASP.NET MVC 5
- 23. Проблема с таблицей маршрутов в приложении MVC 3/4/5
- 24. OptimisticConcurrencyException в приложении MVC
- 25. MVC 5 конфигурационные переменные
- 26. Аутентификация в MVC 5
- 27. Маршрутов в MVC 5
- 28. «CacheProfile» в MVC 5
- 29. Шифрование в MVC 5
- 30. Леса в MVC 5
один раз за запроса средств на уровне метода действий? –
Да, обычно структуры DI предлагают «временную» область, которая означает, что экземпляр создается для каждого объекта, который требует его, «Singleton» scope, который означает, что один экземпляр совместно используется всеми запрошенными объектами, и область «запроса», которая означает любые объекты, созданные как часть одного HTTP-запроса, получают один и тот же экземпляр. В Ninject это 'InRequestScope()'. – juunas
Если возможно, предложите какой-нибудь код или ссылку для ссылки? –