Global.asax.csに次のようなコンポーネントを登録しました。
ContainerBuilder builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterType<WebWorkContext>().As<IWorkContext>().InstancePerHttpRequest();
IContainer container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
// This is where my error happens, not sure why?
var workContext = container.Resolve<IWorkContext>();
WebWorkContext
クラス:
public class WebWorkContext : IWorkContext
{
// Left out other code
}
IWorkContext
インターフェース:
public interface IWorkContext
{
// Left out other code
}
私が得ているエラーは次のとおりです。
タグが「httpRequest」に一致するスコープは、インスタンスがリクエストされたスコープからは見えません。これは通常、HTTPごとのリクエストとして登録されたコンポーネントがSingleInstance()コンポーネント(または同様のシナリオ)によってリクエストされていることを示します。Web統合では、コンテナ自体からではなく、常にDependencyResolver.CurrentまたはILifetimeScopeProvider.RequestLifetimeから依存関係をリクエストします。 。
これを機能させるにはどうすればよいですか?私がこのようにしたい理由は、作業コンテキストが現在の顧客の取得などを処理するためです。
さらにいくつか質問があります。一度に登録するのが賢明/ベストプラクティスですか?別の段階でコンポーネントを追加する必要があるシナリオはありますか?