asp.net中的HTTP到HTTPS重定向不工作

asp.net中的HTTP到HTTPS重定向不工作,asp.net,https,Asp.net,Https,我们有一个简单的要求,即在asp.net 4.0 web应用程序中对某些特定页面使用https。为了检查我们的实现,我们在IIS 7上部署了一个简单的asp.net 4.0应用程序。该应用程序已编码为基于web.config标志通过https将default.aspx页面重定向到securepage.aspx protected void Page_Load(object sender, EventArgs e) { Uri requestUri = Page.Reque

我们有一个简单的要求,即在asp.net 4.0 web应用程序中对某些特定页面使用https。为了检查我们的实现,我们在IIS 7上部署了一个简单的asp.net 4.0应用程序。该应用程序已编码为基于web.config标志通过https将default.aspx页面重定向到securepage.aspx

protected void Page_Load(object sender, EventArgs e)
    {
        Uri requestUri = Page.Request.Url;
        UriBuilder builder = new UriBuilder("https", requestUri.Host, requestUri.Port, "SecurePage.aspx");
        string secureUrl = builder.Uri.ToString();

        if (bool.Parse(ConfigurationManager.AppSettings["UseSecure"]))
        {
            Response.Redirect(secureUrl, true);
        }
        else
        {
            Response.Write(secureUrl);
        }
    }
但当我们在IIS 7上部署此应用程序并加载default.aspx页面后,它会显示“Internet Explorer无法显示该网页”。但是如果我们关闭config标志,它会正确显示页面。该应用程序在端口82上具有http绑定,在端口444上具有https


谁能告诉我哪里出了问题。

当您在前面键入https时,浏览器在端口443而不是444上,因此要在自定义端口上移动它,您需要按以下方式键入

UriBuilder builder = new UriBuilder("http", requestUri.Host, 444, "SecurePage.aspx");

您正在通过requestUri.port使用当前请求的端口,该端口返回80。您应该改为硬编码444:

UriBuilder builder = new UriBuilder("https", requestUri.Host, 444, "SecurePage.aspx");

或者,如果端口发生变化,则使用可配置变量。

两个答案中的一个有效,一个使用
http
或一个使用
https
?或者两者都有?因为答案有这么小的差别。这两个答案都会根据需要而起作用。要点是https端口与http请求端口相同