Как использовать IsMobileDevice () в общем контроллере в nopcommerce 4.2 - PullRequest
0 голосов
/ 15 июня 2019

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

1. Произошла ошибка во время активации определенной регистрации. Смотрите внутреннее исключение для деталей. Регистрация: Activator = CommonController (ReflectionActivator), Services = [Nop.Web.Controllers.CommonController], Lifetime = Autofac.Core.Lifetime.CurrentScopeLifetime, Sharing = Нет, Ownership = OwnedByLifetimeScope ---> Ни один из конструкторов не найден с Aut .Core.Activators.Reflection.DefaultConstructorFinder 'on type' Nop.Web.Controllers.CommonController 'можно вызвать с помощью доступных служб и параметров:

2. Не удается разрешить параметр 'Nop.Services.Helpers.UserAgentHelper userAgentHelper' конструктора 'Void .ctor (Nop.Core.Domain.Security.CaptchaSettings, Nop.Core.Domain.Common.CommonSettings, Nop.Web.Factories.ICommonMode. Services.Directory.ICurrencyService, Nop.Services.Logging.ICustomerActivityService, Nop.Services.Common.IGenericAttributeService, Nop.Services.Localization.ILanguageService, Nop.Services.Localization.ILocalizationService, Nop. IStoreContext, Nop.Web.Framework.Themes.IThemeContext, Nop.Services.Vendors.IVendorService, Nop.Core.IWorkContext, Nop.Services.Messages.IWorkflowMessageService, Nop.Core.Domain. Common.SitemapSettings, Nop.Core.Domain.Common.SitemapXmlSettings, Nop.Core.Domain.StoreInformationSettings, Nop.Core.Domain.Vendors.VendorSettings, Nop.Services.Helpers.UserAgentHelper).

Вот моя строка кода о том, как я использую этот метод в общем контроллере

var mobileDevice = _userAgentHelper.IsMobileDevice();

Вот поле

private readonly IHttpContextAccessor _httpContextAccessor;

Зачем показывать мне ошибку во время выполнения?

Ответы [ 2 ]

1 голос
/ 17 июня 2019

Я только что проверил в nopCommerce 4.20 метод IsMobileDevice в общем контроллере, и он работает нормально, он вернёт true или false, я пробовал с google chrome

Вот код, который я реализовал

private readonly IUserAgentHelper _userAgentHelper;
public CommonController(IUserAgentHelper userAgentHelper)
{
  _userAgentHelper = userAgentHelper;
}


public virtual IActionResult ContactUs()
    {
        var model = new ContactUsModel();

        var mobileDevice = _UserAgentHelper.IsMobileDevice();
        if(mobileDevice)
           return true;

        model = _commonModelFactory.PrepareContactUsModel(model, false);
        return View(model);
    }

enter image description here

0 голосов
/ 17 июня 2019

В сообщении об ошибке указано, что ваш контроллер не создается из-за отсутствия зависимостей. Следовательно, линия, которую вы показываете, даже не вызывается; ошибка происходит до этого, при создании контроллера.

В частности, вы ожидаете экземпляр UserAgentHelper, но Autofac не знает, как его получить. Сервисные зависимости должны запрашиваться их интерфейсом.

Короче, вам нужно IUserAgentHelper, а не UserAgentHelper.

...