我们有一个简单的要求,即对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。
有人能指出我出错的地方。
答案 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");
如果端口发生变化,请使用可配置变量。