Recientemente actualicé mi versión DNN de 7.3.4 a 9.9. Cuando compilo mi solución, recibo la siguiente advertencia:
[Obsoleto("Obsoleto en 9.7.2. Programado para eliminación en v11.0.0, use DotNetNuke.Abstractions.Portals.IPortalAliasInfo.HttpAlias en su lugar.")]
Intenté implementar IPortalAlaiasInfo, pero no tuve éxito. Miré el archivo de inicio de DNN y vi los siguientes servicios:
public void ConfigureServices(IServiceCollection services) { services.AddSingleton<WebFormsModuleControlFactory>(); services.AddSingleton<Html5ModuleControlFactory>(); services.AddSingleton<ReflectedModuleControlFactory>(); services.AddSingleton<IDnnContext, DotNetNukeContext>(); services.AddScoped<IEventLogger, EventLogController>(); services.AddScoped<IEventLogConfigService, EventLogController>(); services.AddScoped<IEventLogService, EventLogController>(); services.AddTransient((IServiceProvider x) => ServiceLocator<IPortalController, PortalController>.Instance); services.AddScoped<IHostSettingsService, HostController>(); services.AddScoped<INavigationManager, NavigationManager>(); services.AddScoped<ISerializationManager, SerializationManager>(); services.AddScoped<IApplicationInfo, DotNetNuke.Application.Application>(); services.AddScoped<IApplicationStatusInfo, ApplicationStatusInfo>(); services.AddScoped<IPortalAliasService, PortalAliasController>(); }
No veo una referencia a la interfaz IPortalAliasInfo.
¿Alguien sabe cómo acceder a DotNetNuke.Abstractions.Portals.IPortalAliasInfo.HttpAlias? Si es así, ¿podría ser tan amable de proporcionar un ejemplo?
Gracias.
Accedería a IPortalAliasInfo a través de IPortalAliasService.GetPortalAlias
No conozco su contexto exacto, pero supongamos un punto final de WebApi, se vería así:
using DotNetNuke.Abstractions.Portals; using DotNetNuke.Web.Api; using System; using System.Linq; using System.Web.Http; namespace My.Namespace { public class MyController : DnnApiController { private readonly IPortalAliasService portalAliasService; public MyController(IPortalAliasService portalAliasService) { this.portalAliasService = portalAliasService; } [HttpGet] [AllowAnonymous] public IHttpActionResult GetPrimaryPortalAlias() { try { var primaryPortalAlias = this.portalAliasService.GetPortalAliasesByPortalId(this.PortalSettings.PortalId) .First(p => p.IsPrimary); return this.Ok(primaryPortalAlias.HttpAlias); } catch (Exception) { var message = "Something went wrong"; return this.InternalServerError(new Exception(message)); throw; } } } }
Si ese no es su contexto, solo tiene que ajustar cómo hacer la parte de inyección de dependencia, pero el resto es el mismo principio ...