我需要使用IServiceProvider訪問ASP.NET Core 1.0中的ConfigureService方法中的會話變量。使用IServiceProvider獲取會話服務
我有一個可以從任何地方返回值的委託/ lambda表達式初始化的服務。在這種情況下,這個lambda表達式參數應該從會話中返回一次調用的值。
下面是示例代碼:
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IMyService>(serviceProvider =>
{
return new MyService(() => {
var session = serviceProvider.GetServices<Microsoft.AspNetCore.Session.DistributedSession>().First();
return session.GetString("CompanyID");
}
);
}
);
// Add framework services.
services.AddMvc();
services.AddDistributedMemoryCache();
services.AddSession();
}
我的會話被配置細(I可以得到/設定值在控制器)。但是,我無法從IServiceProvider獲取服務。我無法找到應該向GetServices方法提供哪種類型的服務來獲取會話。
你在哪裏解決服務? – Tseng
此服務在控制器構造函數中提供,如CompanyController(MyService src){...} –