と を使用ASP.NET MVC 4
してAutofac
います。WebWorkContext
現在の従業員の詳細を取得するために、ソリューションのさまざまな場所に挿入するクラスがあります。
以下は、global.asax ファイル内の Autofac 登録です。
protected void Application_Start()
{
// Autofac
ContainerBuilder builder = new ContainerBuilder();
builder.RegisterModule(new AutofacWebTypesModule());
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterType<WebWorkContext>().As<IWorkContext>().InstancePerHttpRequest();
IContainer container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
私の WebWorkContext クラス:
public class WebWorkContext : IWorkContext
{
private readonly IEmployeeService employeeService;
private readonly HttpContextBase httpContext;
public WebWorkContext(IEmployeeService employeeService, HttpContextBase httpContext)
{
this.employeeService = employeeService;
this.httpContext = httpContext;
}
public Employee CurrentEmployee
{
get
{
return GetCurrentEmployee();
}
}
protected Employee GetCurrentEmployee()
{
string identityName = this.httpContext.User.Identity.Name.ToLower();
// Do what I need to do to get employee details from
// the database with identityName
}
}
私はブレークポイントを置きます:
string identityName = this.httpContext.User.Identity.Name.ToLower();
identityName
は常に空です。なぜかわからない?何か不足していますか?
WebWorkContext クラスの使用方法:
public class CommonController : Controller
{
private readonly IWorkContext workContext;
public CommonController(IWorkContext workContext)
{
this.workContext = workContext;
}
public ActionResult EmployeeInfo()
{
Employee employee = workContext.CurrentEmployee;
EmployeeInfoViewModel viewModel = Mapper.Map<EmployeeInfoViewModel>(employee);
return PartialView(viewModel);
}
}
を使用してVisual Studio 2012
います。