Мы разработали приложение ASP Net MVC, используя шаблон Repository. Мы создаем экземпляр контекста БД, используя класс провайдера контекста, например:
public class ContextProvider
public static DBEntities GetContext()
{
return HttpContext.Current.Items["_EntityContext"] as DBEntities;
}
}
Здесь мы проверяем, что вызов DB DBEntities существует только во время существования запроса - мы помещаем экземпляр в Карта сеанса - HttpContext.Current.Items["_EntityContext"]
в этом примере.
Мы используем это во всем нашем Asp Net Mvc Проекте следующим образом:
public class TeamRepository
{
#region Members
private DBEntities storeDB = null;
#endregion Members
#region Constructors
public TeamRepository()
{
storeDB = ContextProvider.GetContext();
}
#endregion Constructors
#region Methods
...
Теперь нам нужно создать службу WCF, чтобы разрешить доступ к некоторым функциям для других поставщиков.
Поскольку все классы репозитория являются частью проекта - они не были исключены из отдельной DLL, которую я создал ссылка на весь проект в моем новом проекте WCF, чтобы я мог использовать уже существующие вызовы методов БД Repository.
Здесь я сталкиваюсь с проблемой, поскольку не могу получить доступ к переменной Session HttpContext.Current.Items["_EntityContext"]
- вызов метода publi c stati c DBEntities GetContext()
всегда возвращает ноль при вызове из службы WCF.
Я пытался сделать HttpContext.Current
доступным в службе WCF av можно получить, поместив
[ServiceBehavior(AddressFilterMode=AddressFilterMode.Any)]
[AspNetCompatibilityRequirements(RequirementsMode= AspNetCompatibilityRequirementsMode.Required)]
в мой класс Service и настроив раздел serviceHostingEnvironment в web.config, который теперь выглядит следующим образом:
<serviceHostingEnvironment aspNetCompatibilityEnabled="true">
<baseAddressPrefixFilters>
<add prefix="http://localhost” />
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
, но без результатов.
Я использую Windows 10.
Знаете ли вы, как я могу получить доступ к HttpContext.Current.Items["_EntityContext"]
... содержащемуся в Asp Net Mvc проекте из моего проекта WCF?
С уважением