2012-03-19 44 views
3

我有一個要求,即網站需要在https模式下打開(本地開發除外)。這是內部應用程序。HTTPS - Mvc3 - Visual Studio 2010

當我運行網站與web.config條目爲https爲true,它看起來像網站進入循環運動,並重復一次又一次的請求。

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()); 
    } 

我在這裏錯過了什麼?

回答

2

由於您已經在利用web.config來驅動此功能,因此我建議您使用URL Rewrite

您可以設置規則將非HTTPS流量重定向到HTTPS。看到這個線程配置:

http://forums.iis.net/t/1149780.aspx

有了到位,可以進一步提高通過利用web.config transformations以啓用規則,當你部署到生產環境中的開發經驗。

+0

我已經從全局文件中刪除了代碼,並在web.config中創建了一條規則。當我使用http時,我收到錯誤消息「頁面沒有正確重定向」。這裏是規則:< 「(。*)」 匹配URL = /> <規則名稱= 「重定向到HTTPS」> <添加輸入= 「{SERVER_PORT}」 圖案=「443 「否定=」 真」 /> <動作類型= 「重定向」 URL = 「http://dev.domain.com/Study/{R:1}」/> 2012-03-20 19:25:12

+0

I」 m猜測你處於無限重定向循環中,因爲你沒有指定重定向到HTTPS。根據您在評論中提供的內容,url屬性應該類似於「https://dev.domain.com/Study{R:1}」。 – 2012-03-20 20:29:39

+0

所以它需要是https://dev.domain.com/Study/ {R:1} ??? – 2012-03-20 21:20:19

2

您可以使用支持SSL的IIS Express來託管您的網站。

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:")); 
} 
+0

這導致頁面沒有正確重定向錯誤。就像我的一樣。 – 2012-03-20 19:53:09

0

只是一個想法。 Application_Start()是否提供HttpContext.Current.Request?