在 Umbraco 7.13 中,我需要一种方法来获取节点 URL
In Umbraco 7.13, I need a way to get a nodes URL
我想在 Umbraco 中获取节点的 URL。
我想通过网络服务调用的自定义 class 执行此操作,以自动发送包含每个节点的电子邮件 URL。
我一般用这个方法
using umbraco.NodeFactory;
...
Node node = new Node(1234);
string link = node.Url;
但是这会返回一个错误,即对 umbracoContext 的引用不能为空。
据我从网上了解到,这是因为 cron 作业正在调用此服务,然后 umbracoContext 为空。
我需要一种方法来获取节点的 url,方法是提供节点 ID。
我已经尝试了所有这些方法,它们都返回相同的错误:
string url = umbraco.library.NiceUrl(1234);
var umbracoHelper = new UmbracoHelper(Umbraco.Web.UmbracoContext);
string url = umbracoHelper.Url(1234);
var objectNode = umbracoHelper.TypedMedia(1234);
string url = objectNode.Url;
有什么建议吗?
首先,您不应该在 V7 中使用节点 API,它非常旧并且已被弃用。 umbraco.library!
相同
一个简单的方法是在 Umbraco 站点上创建一个 WebAPI 控制器端点,它获取站点上每个页面的 URL 并将它们 returns 作为 URL 数组.如果您希望确保安全,可以向其中添加身份验证等。 WebAPI 控制器的文档可以在下面找到:
https://our.umbraco.com/documentation/reference/routing/webapi/
你的 WebAPI 控制器将有一个完整的 UmbracoContext 可用和访问 Umbraco 助手,所以你可以有大致这样的东西:
public class AlertController : UmbracoApiController
{
public List<string> GetAllUrls()
{
var list = new List<string>();
var allContent = Umbraco.TypedContentAtRoot().FirstOrDefault().DescendantsOrSelf();
foreach (var page in allContent)
{
list.Add(page.Url);
}
return list;
}
}
您可能想要过滤掉不需要的内容或不需要列出的内容(例如设置节点)。
然后您的其他服务可以调用 webAPI 端点并使用 URL 列表并使用它来发送电子邮件。
我想在 Umbraco 中获取节点的 URL。
我想通过网络服务调用的自定义 class 执行此操作,以自动发送包含每个节点的电子邮件 URL。
我一般用这个方法
using umbraco.NodeFactory;
...
Node node = new Node(1234);
string link = node.Url;
但是这会返回一个错误,即对 umbracoContext 的引用不能为空。
据我从网上了解到,这是因为 cron 作业正在调用此服务,然后 umbracoContext 为空。
我需要一种方法来获取节点的 url,方法是提供节点 ID。
我已经尝试了所有这些方法,它们都返回相同的错误:
string url = umbraco.library.NiceUrl(1234);
var umbracoHelper = new UmbracoHelper(Umbraco.Web.UmbracoContext);
string url = umbracoHelper.Url(1234);
var objectNode = umbracoHelper.TypedMedia(1234);
string url = objectNode.Url;
有什么建议吗?
首先,您不应该在 V7 中使用节点 API,它非常旧并且已被弃用。 umbraco.library!
相同一个简单的方法是在 Umbraco 站点上创建一个 WebAPI 控制器端点,它获取站点上每个页面的 URL 并将它们 returns 作为 URL 数组.如果您希望确保安全,可以向其中添加身份验证等。 WebAPI 控制器的文档可以在下面找到:
https://our.umbraco.com/documentation/reference/routing/webapi/
你的 WebAPI 控制器将有一个完整的 UmbracoContext 可用和访问 Umbraco 助手,所以你可以有大致这样的东西:
public class AlertController : UmbracoApiController
{
public List<string> GetAllUrls()
{
var list = new List<string>();
var allContent = Umbraco.TypedContentAtRoot().FirstOrDefault().DescendantsOrSelf();
foreach (var page in allContent)
{
list.Add(page.Url);
}
return list;
}
}
您可能想要过滤掉不需要的内容或不需要列出的内容(例如设置节点)。
然后您的其他服务可以调用 webAPI 端点并使用 URL 列表并使用它来发送电子邮件。