2015-12-21 68 views
3

我有一个在asp.net中构建的Web应用程序,它在HTTP和HTTPS上运行。使网站仅在HTTPS上运行

我想让它仅在HTTPS上运行。

任何机构有想法会发生什么变化

我不知道这个吗?

回答

1

您可以添加代码在你的Global.asax.cs文件

protected void Application_BeginRequest() 
{ 
    if (FormsAuthentication.RequireSSL && !Request.IsSecureConnection) 
    { 
    Response.Redirect(Request.Url.AbsoluteUri.Replace("http://", "https://")); 
    } 
} 
+0

我试过这个解决方案,运行良好。但是如果我添加Application_BeginRequest(),我的网页加载多次。那背后的原因是什么? –

1

Global.asax.cs只需添加该代码。考虑本地发展的Request.IsLocal

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    HttpContext context = HttpContext.Current; 
    if (!context.Request.IsSecureConnection && !context.Request.IsLocal) 
    { 
     Response.Redirect(context.Request.Url.ToString().Replace("http:", "https:")); 
    } 
} 

了解更多关于www和不WWW重定向herehere

+0

我试过这个解决方案,运行良好。但是如果我添加Application_BeginRequest(),我的网页加载多次。那背后的原因是什么? –

+0

我不明白'我的网页加载多次'的意思。如果你请求** http **,它将被重定向到** https **,所以2个请求将被发送到服务器。如果您请求** https **,则不会发生Response.Redirect – dimonser

+0

是的,我知道2个请求将发送到服务器。但是,在这两次请求之后,再次加载页面,但没有输入'Application_BeginRequest'。我试图创建一个示例网站,并添加'Application_BeginRequest'多次加载页面,不明白为什么? –

0

做,这是在IIS中最简单的方法。

在网站下选择“SSL设置”并勾选'需要SSL'复选框并点击应用。

这种方法的好处是它更安全(代码中的错误不会允许非SSL请求),并且实现起来更容易,更快速。缺点是对HTTP URL的请求不会自动重定向,但您没有声明这是必需的。

如果是需求,也可以使用IIS URL Rewrite模块实现此功能。

+0

我试着实现URL重写模块,但在完成链接中提到的所有设置后,网站仍然运行在http上,而不是重定向到https –

+0

@MicrosoftDN在链接中?我没有发布链接。您是否对错误的帖子发表评论(和投票)? –