スタティック.Create()関数を使用してデリゲートファクトリを使用してオブジェクトを作成すると、コンストラクタでこのオブジェクト(UserToken)はすべてのMvcコントローラで使用されます。なぜ、登録されたAutoFacデリゲートファクトリは、タイプがインジェクトされるたびにInstancePerRequestが呼び出されるのですか?
私のコード例では、UserTokenを作成するAutoFacデリゲート関数に登録するときに、UserToken.Create()がリクエストごとに複数回呼び出されています。リクエストごとに一度だけ呼び出され、結果として得られるUserTokenがビルダーによって格納され再利用されることを期待していました。私はここで何が欠けていますか?私はUserToken.Createが要求ごとに一度呼び出されるだけです。
builder.Register<Func<HttpContextBase, IUnitOfWork, UserAccountToken>>(
c => {
var db = c.Resolve<IUnitOfWork>();
var hc = c.Resolve<HttpContextBase>();
return (context, database) => { return UserAccountToken.Create(hc, db); };
}).InstancePerRequest();
builder.Register<UserAccountToken>(
c => {
var db = c.Resolve<IUnitOfWork>();
var hc = c.Resolve<HttpContextBase>();
return UserAccountToken.Create(hc, db);
}).As<IUserAccountToken>().InstancePerRequest();
[OK]を、私は今とはできるだけ早く –
を更新することをしようとしているこれはあなたの問題を解決しました@MarcusCobb? –