1

と を使用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います。

4

1 に答える 1

1

この Web サイトでは、Visual Studio 2012 に付属する IIS を使用しています。Web プロジェクト自体で匿名認証を無効にし、Windows 認証を有効にする必要があることを知りませんでした。それは今動作します。他の誰かが同じ問題を抱えている場合、私が従った手順は次のとおりです。

IIS エクスプレス

  • ソリューション エクスプローラーでプロジェクトをクリックして、プロジェクトを選択します。
  • [プロパティ] ペインが開いていない場合は、開きます (F4)。
  • プロジェクトの [プロパティ] ペインで:

    • 「匿名認証」を「無効」に設定します。
    • 「Windows 認証」を「有効」に設定します。
于 2013-04-12T08:20:32.553 に答える