Я ударил стену на этом. У меня есть библиотека WCF с соответствующим веб-сервисом WCF. Веб-приложение из песочницы пытается запустить один из методов из этой службы.WCF и FluentNHibernate
Служба, однако, будет регистрировать запросы, как они сделаны. Уровень сохранения здесь построен с использованием FluentNHibernate. Управление сеансами в веб-приложении в прошлом было довольно прямым (например, HttpModules), но в WCF для меня это немного сложно.
Я следил за примечаниями и примерами с помощью IglooCommons library и добавил следующую строку в свой файл global.asax (находящийся в каталоге веб-службы).
protected void Application_Start(object sender, EventArgs e)
{
NHibernateFactory.Initialize(new SessionFactory().BuildSessionFactory());
}
BuildSessionFactory возвращает следующее: (. * SVC)
public class SessionFactory
{
public SessionFactory() { }
public ISessionFactory BuildSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlConfiguration
.MsSql2005
.ConnectionString(x =>
x.FromConnectionStringWithKey("myConnection"))
.ShowSql()
.CurrentSessionContext<WebSessionContext>())
.Mappings(m =>
m.FluentMappings
.AddFromAssemblyOf<OneClass>()
.AddFromAssemblyOf<AnotherClass>()
.Conventions.Add(
PrimaryKey.Name.Is(x => x.EntityType.Name + "ID"),
ForeignKey.EndsWith("ID"),
Table.Is(x => Inflector.Net.Inflector.Pluralize(x.EntityType.Name))))
.BuildSessionFactory();
}
}
страницы обслуживания нагрузку с успокаивающим фондовом синим "чтобы генерировать классы использовать эту страницу" WSDL, без вопроса.
Когда веб-приложение, которое ссылается эта попытка вызвать метод обслуживания,
NHibernateContext.Current().Session
не в состоянии найти живую сессию. После перехода через приложение запускается метод запуска приложения в global.asax, однако он, кажется, умирает (это предположение) до любых действий, требующих его.
Я понимаю, что IglooCommons может быть немного специфичным, поскольку NHibernateContext является запатентованной библиотекой, однако WCF с уровнем сохранения не является чем-то необычным. Мы высоко ценим любые мысли о том, что я пропустил, или другое направление.
Дополнительное примечание:
Для веб-приложения, используя эту службу, я создал «Interop» библиотеку, которая была основана на WSDL, автоматически генерируемый с помощью SvcUtil. Существует не веб-ссылка между веб-приложением и веб-службой, а только веб-приложение, использующее классы автогенера.
retagged потому, что свободно-NHibernate является признанным тег – ddc0660