62,047
社区成员
发帖
与我相关
我的任务
分享
var config = new HttpConfiguration();
<system.web>
<authentication mode="Forms">
//****备注0
<forms loginUrl="~/Account/Login" timeout="2880" slidingExpiration="true" name=".STSASPAUTH" />
<!--<forms loginUrl="~/Home/Account2/Login" timeout="2880" slidingExpiration="true" name=".STSASPAUTH" />-->
</authentication>
<authorization>
<deny users="?" />
</authorization>
<compilation debug="true" targetFramework="4.5.2" />
<httpRuntime targetFramework="4.5.2" />
</system.web>
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
// eliminate this line code to let OWIN manage WebApi.
//GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
public override void Init() //******备注1
{
PostAuthenticateRequest += MvcApplication_PostAuthenticateRequest;
base.Init();
}
private void MvcApplication_PostAuthenticateRequest(object sender, EventArgs e)
{
HttpContext.Current.SetSessionStateBehavior(
SessionStateBehavior.Required);
}
// .....
}
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
AutofacConfig.Config(app);
ConfigureAuth(app);
}
}
class AutofacConfig
{
public static IContainer Container
{
get; private set;
}
public static void Config(IAppBuilder app)
{
var builder = new ContainerBuilder();
//...
builder.RegisterType<ApplicationDbContext>().AsSelf().As<DbContext>().InstancePerRequest();
//builder.RegisterType<ApplicationUserManager>().InstancePerRequest();
builder.Register<ApplicationUserManager>(
c => ApplicationUserManager.Create2(c.Resolve<IUserStore<UserEntity>>())).InstancePerRequest();
builder.RegisterType<UserStore<UserEntity>>().As<IUserStore<UserEntity>>();
// Get your HttpConfiguration. In OWIN, you'll create one
// rather than using GlobalConfiguration.
var config = new HttpConfiguration(); ///******************备注2*******************
//var config = GlobalConfiguration.Configuration;
// don't forget this line
//AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(config);
// for MVC ...
#region
// Register your MVC controllers.
builder.RegisterControllers(typeof(MvcApplication).Assembly);
// Run other optional steps, like registering model binders,
// web abstractions, etc., then set the dependency resolver
// to be Autofac.
// OPTIONAL: Register model binders that require DI.
builder.RegisterModelBinders(Assembly.GetExecutingAssembly());
builder.RegisterModelBinderProvider();
// OPTIONAL: Register web abstractions like HttpContextBase.
builder.RegisterModule<AutofacWebTypesModule>();
// OPTIONAL: Enable property injection in view pages.
builder.RegisterSource(new ViewRegistrationSource());
// OPTIONAL: Enable property injection into action filters.
builder.RegisterFilterProvider();
// OPTIONAL: Enable action method parameter injection (RARE).
//builder.InjectActionInvoker();
#endregion
// for WebApi2 ...
#region
// Register your Web API controllers.
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
// OPTIONAL: Register the Autofac filter provider.
builder.RegisterWebApiFilterProvider(config);
#endregion
var container = builder.Build();
Container = container;
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
// OWIN MVC and WebApi2 SETUP ...
// Register the Autofac middleware FIRST, then the Autofac Web API middleware,
// and finally the standard Web API middleware.
app.UseAutofacMiddleware(container);
app.UseAutofacMvc();
app.UseAutofacWebApi(config);
app.UseWebApi(config);
}
}
public class HomeAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Home";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.Routes.MapHttpRoute(
name: "Home_WebApiRout",
routeTemplate: "api/Home/{controller}/{action}/{id}",
defaults: new { action = "Index", id = RouteParameter.Optional }
);
context.MapRoute(
"Home_default",
"Home/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
public class AbcController : ApiController
{
private ApplicationSignInManager _signInManager;
private ApplicationUserManager _userManager;
private ICultureService _cultureSvc;
private IUserService _userSvc;
private ILogService _logSvc;
public AbcController(ICultureService cultureSvc, IUserService userSvc, ILogService logSvc)
{
_cultureSvc = cultureSvc;
_userSvc = userSvc;
_logSvc = logSvc;
}
[AllowAnonymous]
[HttpGet]
public IHttpActionResult GetTest()
{
var s = HttpContext.Current.Session;
return Ok();
}
}
public class AccountController : Controller
{
// ...
public AccountController(ApplicationUserManager userManager, ApplicationSignInManager signInManager,
ICultureService cultureSvc, IUserService userSvc, ILogService logSvc)
{
UserManager = userManager;
SignInManager = signInManager;
_cultureSvc = cultureSvc;
_userSvc = userSvc;
_logSvc = logSvc;
}
//
// GET: /Account/Login
[AllowAnonymous]
public async Task<ActionResult> Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
await _cultureSvc.DeduceCultureNameAsync();
return View();
}
//...
}