ApplicationContext.Current为空

时间:2018-11-15 11:14:53

标签: c# umbraco umbraco7 umbraco6

我在栈上发现了与here相同的问题,并尝试了相同的想法,但我仍然收到ApplicationContext.Current为null。

我正在制作Web服务,需要从Umbraco数据库中提取几条数据。我不需要任何Umbraco意见或任何其他内容。我是Umbraco Core库的新手。

我所做的是获得以下有关我的新Web服务项目的参考

umbraco.dll
Umbraco.Core.dll
umbraco.DataLayer.dll
umbraco.editorControls.dll
umbraco.MacroEngines.dll
umbraco.providers.dll
Umbraco.Web.UI.dll
umbraco.XmlSerializers.dll
UmbracoExamine.dll

以及下面的类代码,我在其中接收ApplicationContext.Current为空

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Umbraco.Web.Mvc;
using umbraco.MacroEngines;
using Umbraco.Web;
using Umbraco.Web.WebApi;
using umbraco.NodeFactory;
using Umbraco.Core;
using Umbraco.Core.Models;
using Umbraco.Core.Services;
using umbraco.cms.businesslogic.media;
using umbraco.BusinessLogic;
using System.Configuration;
using log4net;
using System.Reflection;
using Umbraco.Core.Logging;
using System.Web.Optimization;
using System.Web.Http;
using System.Data.SqlClient;
using System.Data;
using System.Web.Script.Serialization;
using System.Collections;
using System.Collections.Specialized;
using System.Web.UI.WebControls;
using Stripe;
using System.Web.UI;
using System.Text.RegularExpressions;
using System.Web.Configuration;
using System.Web.Security;
using Newtonsoft.Json;
using System.Net.Mail;
using System.Text;
using System.Net;
using System.IO;

public class RegisterUserController : UmbracoApiController
{
    public static string UmbracoConnectionString = ConfigurationManager.ConnectionStrings["umbracoDbDSN"].ConnectionString;

    public static IMemberService memberService = ApplicationContext.Current.Services.MemberService;// Here I am getting ApplicationContext.Current as null

}

但是我正在调用此类,将ApplicationContext.Current设置为null。 因此,由于这个原因,我在此类中有许多方法可以在memberService上使用,并且由于此null引用而无法使用。甚至没有使用成员服务的其他方法也不会被调用。

1 个答案:

答案 0 :(得分:0)

对我来说,以下代码似乎有效。

public class TestApiController : UmbracoApiController
{
    private static string _umbracoConnectionString = ConfigurationManager.ConnectionStrings["umbracoDbDSN"].ConnectionString;

    private static IMemberService _memberService = global::Umbraco.Core.ApplicationContext.Current.Services.MemberService;

    public int GetTest()
    {
        var memberCount = _memberService.Count();
        return memberCount;
    }
}

如果上述代码对您不起作用,例如使用AJAX,请尝试以下代码:

public class TestApiController : UmbracoApiController
{
    public int GetTest()
    {
        var ms = Services.MemberService;
        return ms.Count();
    }
}