私の WCF プロジェクトでは、global.asax で Castle Windsor を使用してインターフェイスを登録します。
Component.For<IStrategy>()
.ImplementedBy<MyStrategy>()
.LifestylePerWcfOperation(),
その後、同じファイルで、プロバイダーを使用して FluentNhibernate を使用して NHibernate を構成します。
FluentConfiguration configuration = Fluently.Configure()
.Database(
MsSqlConfiguration.MsSql2008.ConnectionString(myConnString)
.Provider<ConnectionProvider>())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<TenantMap>()) etc etc
ただし、この ConnectionProvider は、それを使用する必要がある他の WCF サービスがあるため、共通の共有 dll ライブラリでホストされます。この依存関係を以下のように登録したいのですが、機能しません。つまり、インスタンスを手動で新しく作成する必要があります。
public ConnectionProvider()
{
// doesnt work
using (IDependencyScope scope = GlobalConfiguration.Configuration.DependencyResolver.BeginScope())
{
_myStrategy = scope.GetService<IStrategy>();
}
}
とにかくこれを機能させる方法はありますか?現在、別のアセンブリにあるように、失われたスコープのようです。同じアセンブリで、DependencyScope は正常に動作し、インスタンスを作成しますが、それを共有 dll に保持したいと考えています。
編集:私が得るエラーは、このビットのコードの時計で「System.Web.Http.Dependencies.EmptyResolver」です:GlobalConfiguration.Configuration.DependencyResolver