asp.net中的HTTP到HTTPS重定向无法正常工作

时间:2012-06-19 14:49:49

标签: asp.net https

我们有一个简单的要求,即对asp.net 4.0 Web应用程序中的某些特定页面使用https。为了检查我们的实现,我们在IIS 7中部署了一个简单的asp.net 4.0应用程序。该应用程序已编码为基于web.config标志将default.aspx页面重定向到https上的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无法显示网页”。但是如果我们关闭配置标志,它会正确显示页面。该应用程序在端口82上具有http绑定,在端口444上具有https。

有人能指出我出错的地方。

2 个答案:

答案 0 :(得分:1)

当您在前面https键入内容时,浏览器会在端口443上而不在444上,因此要在自定义端口上移动,您需要将其键入为。

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

答案 1 :(得分:1)

您正在通过requestUri.Port使用当前请求的端口,该端口返回80.您应该对444进行硬编码:

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

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