【问题标题】:No links working in umbraco没有在 umbraco 中工作的链接
【发布时间】:2014-10-10 20:35:57
【问题描述】:

链接在我们的 umbraco 项目中突然失效。所有链接(umbraco 链接,例如 @Model.Url,不是硬编码链接)都不起作用,只是指向“localhost:8080”。

我收到一个错误,抱怨这段代码出现空指针异常:

namespace Sk.Web.Routing
{
    public class ExternalUrlProvider : IUrlProvider
    {
        public string GetUrl(UmbracoContext umbracoContext, int id, Uri current, UrlProviderMode mode)
        {
            var node = umbracoContext.ContentCache.GetById(id);
            return node.HasValue("umbracoExternalUrl")
                ? node.GetPropertyValue<string>("umbracoExternalUrl")
                : "";
        }

        public IEnumerable<string> GetOtherUrls(UmbracoContext umbracoContext, int id, Uri current)
        {
            return Enumerable.Empty<string>();
        }
    }
}

在后台选择节点时。

另外,当我调试时,我注意到页面模型错过了“umbracoExternalUrl”字段。很奇怪。

有人知道这里发生了什么吗?

【问题讨论】:

  • 什么版本的 Umbraco?另外,能否指出异常的全部内容?

标签: c# asp.net-mvc url hyperlink umbraco


【解决方案1】:

实际上您在此处报告了两个问题:

  • 仅指向 / 的链接
  • 您的后台出现空引用异常

另外,您应该真正引用您正在使用的代码的来源(即http://www.theoutfield.net/blog/2013/10/handling-external-urls-in-umbraco-6

澄清一下,代码覆盖当您使用umbracoExternalUrl 字段中指定的地址调用@Model.Url 时,Umbraco 返回的 URL。

如果你进一步阅读这篇文章,你会发现你需要创建一个ApplicationEventHandler

public class Bootstrapper : IApplicationEventHandler
{
    public void OnApplicationInitialized(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
    { }

    public void OnApplicationStarting(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
    {
        UrlProviderResolver.Current.InsertTypeBefore<DefaultUrlProvider, ExternalUrlProvider>();
    }

    public void OnApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
    { }
}

检查是否没有更改或删除。

如果您所有已发布的网站页面链接都显示/,则这意味着上面的代码正在到达node.HasValue("umbracoExternalUrl") 行并返回false。因此,您需要重新发布您的站点以更新 XML 和内容缓存。

如果您在后台遇到空引用异常,几乎可以肯定是因为没有UmbracoContext。您需要提供更多信息才能回答此问题,即后台的确切操作导致异常发生。例如,它是定制部分还是多节点选择器?

如果是自定义部分或数据类型,则需要确保 UmbracoContext 在运行时可用于代码。

注意:感谢http://www.theoutfield.net/提供代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多