asp.net中的HTTP到HTTPS重定向不工作
我们有一个简单的要求,即在asp.net 4.0 web应用程序中对某些特定页面使用https。为了检查我们的实现,我们在IIS 7上部署了一个简单的asp.net 4.0应用程序。该应用程序已编码为基于web.config标志通过https将default.aspx页面重定向到securepage.aspxasp.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
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请求端口相同