ApplicationContext.Current возвращается на ноль - PullRequest
0 голосов
/ 15 ноября 2018

Я нашел тот же вопрос в стеке над потоком, что и здесь , и попытался сделать то же самое, но все еще получаю ApplicationContext.Current как ноль.

Я делаю веб-сервис, где мне нужновытащить пару кусочков данных из базы данных Umbraco.Мне не нужны какие-либо виды Умбрако или что-то в этом роде.Я новичок в библиотеках Umbraco Core.

Что я сделал, так это получил ниже ссылку на мой новый проект веб-сервиса

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.Текущий как ноль

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 как ноль.Поэтому из-за этого у меня есть много методов в этом классе, которые работают на memberService, и из-за этой нулевой ссылки они не работают.Даже другие методы, которые не используют членскую службу, не вызываются.

1 Ответ

0 голосов
/ 20 ноября 2018

Мне кажется, что приведенный ниже код работает.

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