BuildFeed/BuildFeed/Global.asax.cs

68 lines
2.1 KiB
C#
Raw Normal View History

2014-10-11 06:57:02 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
2014-10-11 06:57:02 +08:00
using System.Web.Mvc;
using System.Web.Routing;
using System.Web.Security;
2016-08-30 18:39:52 +08:00
using BuildFeed.Code;
using BuildFeed.Code.Options;
using BuildFeed.Model;
2014-10-11 06:57:02 +08:00
namespace BuildFeed
{
2017-02-24 04:53:49 +08:00
public class MvcApplication : HttpApplication
{
protected void Application_Start()
{
// Disable ASP.NET MVC version header
MvcHandler.DisableMvcResponseHeader = true;
// Don't bother looking for the legacy aspx view engine.
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new RazorViewEngine());
RouteConfig.RegisterRoutes(RouteTable.Routes);
2017-02-24 04:53:49 +08:00
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
2018-02-07 06:16:37 +08:00
var db = new DateTimeModelBinder();
2017-02-24 04:53:49 +08:00
ModelBinders.Binders.Add(typeof(DateTime), db);
ModelBinders.Binders.Add(typeof(DateTime?), db);
2017-05-26 04:21:40 +08:00
ModelMappings.Initialise();
Roles.CreateRole("Administrators");
Roles.CreateRole("Editors");
Roles.CreateRole("Users");
2017-02-24 04:53:49 +08:00
MongoConfig.SetupIndexes();
}
public override string GetVaryByCustomString(HttpContext context, string custom)
{
2018-02-07 06:16:37 +08:00
var parts = custom.Split(';');
2017-02-24 04:53:49 +08:00
var varyParts = new List<string>();
2018-02-07 06:16:37 +08:00
var contextWrapper = new HttpContextWrapper(context);
2017-02-24 04:53:49 +08:00
foreach (string part in parts)
{
2017-02-24 04:53:49 +08:00
switch (part)
{
case "userName":
varyParts.Add($"user:{context.User.Identity.Name}");
break;
case "lang":
varyParts.Add($"lang:{Locale.DetectCulture(contextWrapper).IetfLanguageTag}");
2017-02-24 04:53:49 +08:00
break;
case "theme":
varyParts.Add($"theme:{Theme.DetectTheme(contextWrapper)}");
break;
}
}
2017-02-24 04:53:49 +08:00
return string.Join(";", varyParts.OrderBy(s => s));
}
}
2016-07-13 19:35:21 +08:00
}