0

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

谁能指出我们哪里出错了。

4

2 回答 2

1

当您在前面键入时https,浏览器将继续使用端口443而不是 444,因此要在您的自定义端口上移动,您需要将其键入为。

UriBuilder builder = new UriBuilder("http", requestUri.Host, 444, "SecurePage.aspx");
于 2012-06-19T14:58:41.587 回答
1

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

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

或者,如果端口更改,请使用可配置变量。

于 2012-06-19T14:58:44.363 回答