我在這一個上打了一堵牆。我有一個WCF庫與各自的WCF Web服務。沙盒Web應用程序嘗試從此服務中啓動一個方法。WCF和FluentNHibernate
但是,該服務會在請求發出時記錄請求。這裏的持久層是用FluentNHibernate構建的。 Web應用程序中的會話管理在過去一直很直接(即HttpModules),但在WCF中對我來說有點棘手。
我遵循筆記和IglooCommons library的示例,並將以下行添加到我的global.asax(駐留在Web服務目錄中)。
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」 頁面,沒有問題。
當引用此Web應用程序試圖調用服務的方法,
NHibernateContext.Current().Session
無法找到任何實時會話。在逐步完成應用程序之後,global.asax中的app start方法正在被解僱,但在任何需要它的操作之前似乎正在死亡(這是一種猜測)。
我意識到IglooCommons可能有點特定,因爲NHibernateContext是一個專有庫,但是,帶有持久層的WCF並不少見。任何想到我錯過了什麼或另一個方向採取非常感謝。
附加說明:
使用這項服務的Web應用程序,我創建了這是基於WSDL,自動生成使用SvcUtil工具的「互操作」庫。 Web應用程序和Web服務之間沒有Web引用,只是使用自動生成類的Web應用程序。
重新標記,因爲流利,NHibernate的是一個既定的標籤 – ddc0660 2009-11-05 18:43:49