我有一个要求,即网站需要以https模式打开(除了本地开发)。这是内部应用程序。
当我使用web.config条目将网站运行为真为https时,看起来该网站进入循环运动并一次又一次地重复该请求。
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
//make sure that the remote site opens in https mode.
bool isSSL = false;
bool.TryParse(ConfigurationManager.AppSettings[ApplicationKeys.IsSSLRequired], out isSSL);
if (isSSL && !HttpContext.Current.Request.IsLocal && !HttpContext.Current.Request.IsSecureConnection)
filters.Add(new RequireHttpsAttribute());
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
//RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
//wire up Unity IoC
container = new UnityContainer();
UnityBootstrapper.ConfigureContainer(container);
EntityMapper.MapEntities();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
//wire up Unity Controller Factory
ControllerBuilder.Current.SetControllerFactory(new UnityControllerFactory());
}
我在这里缺少什么?
答案 0 :(得分:2)
您可以使用支持SSL的IIS Express来托管您的网站。
答案 1 :(得分:2)
由于您已经在利用web.config来推动此功能,我建议您使用URL Rewrite。
您可以设置规则以将非HTTPS流量重定向到HTTPS。有关配置,请参阅此主题:
http://forums.iis.net/t/1149780.aspx
有了这些,您可以利用web.config transformations在部署到生产环境时启用规则,从而进一步改善开发体验。
答案 2 :(得分:0)
在你的Global.asax中:
protected void Application_BeginRequest()
{
bool isSSL = false;
bool.TryParse(ConfigurationManager.AppSettings[ApplicationKeys.IsSSLRequired], out isSSL);
if (isSSL && !Context.Request.IsSecureConnection)
Response.Redirect(Context.Request.Url.ToString().Replace("http:", "https:"));
}
答案 3 :(得分:0)
只是一个想法。在Application_Start()?
中是否可以使用HttpContext.Current.Request