微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有人在 DNN 9.9 版中实现了 DotNetNuke.Abstractions.Portals.IPortalAliasInfo.HttpAlias 吗?

如何解决有人在 DNN 9.9 版中实现了 DotNetNuke.Abstractions.Portals.IPortalAliasInfo.HttpAlias 吗?

我最近将 DNN 版本从 7.3.4 升级到 9.9。当我编译我的解决方案时,我收到以下警告:

[过时("已在 9.7.2 中弃用。计划在 v11.0.0 中删除,请改用 DotNetNuke.Abstractions.Portals.IPortalAliasInfo.HttpAlias。")]

我尝试实现 IPortalAlaiasInfo,但没有成功。我查看了 DNN 的启动文件,看到了以下服务:

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>();
}

我没有看到对接口 IPortalAliasInfo 的引用。

有谁知道如何访问 DotNetNuke.Abstractions.Portals.IPortalAliasInfo.HttpAlias?如果是这样,你能不能提供一个例子?

谢谢。

解决方法

您将通过 IPortalAliasService.GetPortalAlias 访问 IPortalAliasInfo

我不知道您的确切上下文,但让我们假设一个 WebApi 端点,它看起来像这样:

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;
            }
        }
    }
}

如果这不是你的上下文,你只需要调整如何做依赖注入部分,但其余的都是相同的原则......

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。