gpt4 book ai didi

asp.net c# 从 http 重定向到 https

转载 作者:可可西里 更新时间:2023-11-01 15:03:55 34 4
gpt4 key购买 nike

所以在我的代码中,我想检测我的登录页面是否被称为 http,并将其重定向到 https。

我知道有非代码方法可以给这只猫剥皮,但出于令人沮丧的技术原因,我支持用代码来做。

            if (!Request.IsSecureConnection)
{
string redirectUrl = Request.Url.ToString().Replace("http:", "https:");
Response.Redirect(redirectUrl);
}

所以我将其放入我的 Page_Load(...),确保我的调试器使用真正的 IIS,而不是 VS2008s IIS,然后点击调试。

在调试器中,跳华尔兹,点击Response.Redirect("https://localhost/StudentPortal3G/AccessControl/AdLogin.aspx "),按 f5。

获取“Internet Explorere 无法显示网页,url 是 HTTP,而不是 HTTPS。没有收到信息错误...同样的事情发生在调试器中没有运行。

那我错过了什么?它似乎不是火箭科学,我在很多博客上看到过类似的代码......

我做错了什么?我认为这一定是一个非常明显的 Rookie 错误,但我没有看到。

最佳答案

我也会执行 !Request.IsLocal 以确保我没有调试,但如果您使用的是真实的 IIS 实例并在调试时应用了证书,那应该这不是问题。

if (!Request.IsLocal && !Request.IsSecureConnection)
{
string redirectUrl = Request.Url.ToString().Replace("http:", "https:");
Response.Redirect(redirectUrl, false);
HttpContext.ApplicationInstance.CompleteRequest();
}

注意:此答案假定 Controller 内有一个 MVC 上下文,其中 HttpContext 是一个保存当前上下文的属性。如果您不幸仍在使用 WebForms 或以退化的方式引用上下文,您将需要使用 HttpContext.Current.ApplicationInstance.CompleteRequest()

注意:我已将其更新为与根据 framework documentation 终止请求的推荐模式一致.

When you use this method in a page handler to terminate a request for one page and start a new request for another page, set endResponse to false and then call the CompleteRequest method. If you specify true for the endResponse parameter, this method calls the End method for the original request, which throws a ThreadAbortException exception when it completes. This exception has a detrimental effect on Web application performance, which is why passing false for the endResponse parameter is recommended. For more information, see the End method.

关于asp.net c# 从 http 重定向到 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5305443/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com