在ASP.Net中编写重定向到SSL页面的最佳方法是什么?

本文关键字:最佳 方法 是什么 SSL Net ASP 重定向 | 更新日期: 2023-09-27 18:06:41

我一直在努力重定向到SSL页面代码一段时间的ASP。网络应用程序。我还没有找到一个好的解决办法。问题是,我想有代码被禁用,如果我是在本地主机上,例如,当我调试或编码,但我不能让它工作。另一个问题是,它必须重定向到另一个url,所以http://www.xx.com应该重定向到https://Secure.xxx.com。什么好主意吗?

在ASP.Net中编写重定向到SSL页面的最佳方法是什么?

如果你想在页面级别设置ssl属性,你应该创建一个自定义属性。

[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
 public sealed class HttpsAttribute : Attribute{}
[HttpsAttribute]
public partial class PageSecured: YourCustomBasePage {}

现在基本页YourCustomBasePage可以检查这个attribute是否设置:

protected override void OnInit(EventArgs e){ 
   if(!Request.IsSecureConnection){
      HttpsAttribute secureAttribute = (HttpsAttribute)Attribute.GetCustomAttribute(GetType(), typeof(HttpsAttribute));
      if(secureAttribute != null){
         //Build your https://Secure.xxx.com url
         UriBuilder httpsUrl = new UriBuilder(Request.Url){Scheme = Uri.UriSchemeHttps, Port = 443};
         Response.Redirect(httpsUrl.Uri.ToString());
      }
   }
}

要排除本地机器重定向到HTTPS,您可以在web.config中使用配置值。

private bool HTTPSEnabled{
  get{ return ConfigurationManager.AppSettings["HTTPSEnabled"] == null || Boolean.Parse(ConfigurationManager.AppSettings["HTTPSEnabled"]); }
}

,在第一个条件

中加上检查
if(!Request.IsSecureConnection && HTTPSEnabled) 

我在生产中使用这个库。与设置属性相比,我更喜欢它,因为它是配置驱动的,并且可以配置到一个很好的级别。话虽如此,我不确定它是否可以重定向到子域。我甚至不知道你为什么想要这样。