1

我正在使用ASP.NET MVC 4Autofac。我有一个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.

4

1 回答 1

1

该网站使用 Visual Studio 2012 附带的 IIS。我不知道我需要禁用匿名身份验证并在 Web 项目本身上启用 Windows 身份验证。现在可以了。如果其他人有同样的问题,以下是我遵循的步骤:

IIS 快递

  • 在解决方案资源管理器中单击您的项目以选择该项目。
  • 如果“属性”窗格未打开,请将其打开 (F4)。
  • 在项目的“属性”窗格中:

    • 将“匿名身份验证”设置为“禁用”。
    • 将“Windows 身份验证”设置为“启用”。
于 2013-04-12T08:20:32.553 回答