c# – HTTPS重定向导致错误“服务器无法在发送HTTP标头后追加标
发布时间:2020-12-16 01:36:16 所属栏目:百科 来源:网络整理
导读:我需要检查我们的访问者是否使用HTTPS.在BasePage中,我检查请求是否来自HTTPS.如果不是,我会使用HTTPS重定向.但是,当有人来到该网站并使用此功能时,我收到错误: System.Web.HttpException: Server cannot append header after HTTP headers have been sent.
我需要检查我们的访问者是否使用HTTPS.在BasePage中,我检查请求是否来自HTTPS.如果不是,我会使用HTTPS重定向.但是,当有人来到该网站并使用此功能时,我收到错误:
这是我开始使用的代码: // If page not currently SSL if (HttpContext.Current.Request.ServerVariables["HTTPS"].Equals("off")) { // If SSL is required if (GetConfigSetting("SSLRequired").ToUpper().Equals("TRUE")) { string redi = "https://" + HttpContext.Current.Request.ServerVariables["SERVER_NAME"].ToString() + HttpContext.Current.Request.ServerVariables["SCRIPT_NAME"].ToString() + "?" + HttpContext.Current.Request.ServerVariables["QUERY_STRING"].ToString(); HttpContext.Current.Response.Redirect(redi.ToString()); } } 我也尝试在上面添加它(我在另一个站点中使用了一点类似的问题): // Wait until page is copletely loaded before sending anything since we re-build HttpContext.Current.Response.BufferOutput = true; 我在IIS 6上使用.NET 3.5中的c#. 解决方法
乍得,
你重定向时尝试结束输出了吗?您可以将第二个参数设置为true,以告知输出在发出重定向标头时停止.或者,如果您正在缓冲输出,那么可能需要在执行重定向之前清除缓冲区,因此标头不会与重定向标头一起发送出去. 布赖恩 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |