在现有的.net站点上使用Umbraco内容

时间:2013-01-22 16:04:29

标签: .net umbraco

我想将Umbraco用作现有.net网站的CMS。 我已经转移了所有Umbraco教程/维基文章,并得出结论,在我的代码中通过Umbraco DLL使用NodeFactory是前进的方向。

但是,所有文章/ wiki /社区帮助都假设您的Umbraco安装已经是现有网站的一部分。 在我的情况下,我需要直接引用我的网站到新的Umbraco安装,这是一个简单的例子,从Umbraco Web.Config导入设置(如数据库连接字符串等..)到我的网站Web.Config或在那里从Umbraco安装中提取内容而不将其作为现有网站的一部分的更好方法是什么?

3 个答案:

答案 0 :(得分:0)

取决于您需要的内容。我建议创建一些基本的Web服务,以提供从umbraco站点访问数据的API。 Umbraco提供基本扩展扩展,允许您轻松地提供Web服务。但你也可以连接一个ashx文件或类似的东西。我在使用odata和umbraco网站时取得了成功。

答案 1 :(得分:0)

您想要查看Umbraco / Base - 更多详细信息,请参阅以下网址以及此处引用的有关如何使用Umbraco / Base的其他页面:

http://our.umbraco.org/wiki/reference/umbraco-base

答案 2 :(得分:0)

我们使用自定义404处理程序。 ASP.NET网站将处理请求,而不是返回404,然后在内容站点上查找相同的路径。如果内容存在,我们将返回该页面。如果没有,我们会返回404错误。

MVC示例

[DefaultAction("index")]
public class RescuesController : SmartDispatchController
{
    private static readonly Regex headtitleRegex = new Regex("<h1>([^<]*)</>>");

    public RescuesController(IApplicationContextProvider currentCustomerProvider, IConfigurationManager configurationManager) : base(currentCustomerProvider, configurationManager) { }

    public void Index()
    {
        RenderView("rescues","content");

        string pageName = Request.Uri.LocalPath;
        if (pageName.EndsWith("/index"))
            pageName = pageName.Substring(0, pageName.LastIndexOf("/index"));

        try
        {
            var remoteContent = GetRemoteContent(pageName);

            var matches = headtitleRegex.Match(remoteContent);
            if (matches.Groups.Count > 1)
                PropertyBag.HeadTitle = matches.Groups[1].Captures[0].Value;

            PropertyBag.remoteContent = headtitleRegex.Replace(remoteContent, "");
        } catch (WebException) {
            Handle404();
        }
    }

    public static string GetRemoteContent(string pageName)
    {
        return (new WebClient()).DownloadString("http://content.mysite.com/" + pageName);
    }
}

http://www.robertgray.net.au/posts/2010/4/404-handlers