首页 新闻 会员 周边 捐助

mvc里部分页面需要跳转到https,怎么处理比较好?

0
悬赏园豆:5 [已解决问题] 解决于 2016-05-31 14:31

目前用这样的方式,效果不对

void Application_BeginRequest(object sender, EventArgs e)
{
switch (Request.Url.Scheme)
{
case "https":
Response.AddHeader("Strict-Transport-Security", "max-age=300");
break;
case "http":
string url = Request.Path.ToLower();
if (ConfigurationManager.AppSettings["https"] == "1" && (url.Contains("/personal/") || url.Contains("/admin/")))
{
url = "https://" + Request.Url.Host + Request.Url.PathAndQuery;
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", url);
}
break;

}
}

11ge的主页 11ge | 初学一级 | 园豆:11
提问于:2016-05-31 09:34
< >
分享
最佳答案
1

加上Response.End()试试

收获园豆:5
dudu | 高人七级 |园豆:30925 | 2016-05-31 09:50

不错,加了后到达预期效果

11ge | 园豆:11 (初学一级) | 2016-05-31 14:30

最终代码:

string url = Request.Path.ToLower();
switch (Request.Url.Scheme)
{
case "https":
if (ConfigurationManager.AppSettings["https"] == "1" && (url.Contains("/personal/") || url.Contains("/admin/")))
{

}
else
{
url = "http://" + Request.Url.Host + Request.Url.PathAndQuery;
Response.Redirect(url);
Response.End();
}
break;
case "http":
if (ConfigurationManager.AppSettings["https"] == "1" && (url.Contains("/personal/") || url.Contains("/admin/")))
{
url = "https://" + Request.Url.Host + Request.Url.PathAndQuery;
Response.Redirect(url);
Response.End();
}
break;
}

11ge | 园豆:11 (初学一级) | 2016-05-31 14:32
其他回答(2)
0

嗯.异步调用也会被转掉.你都说部分页面了.就加一个部分页面数组.检测当前url在里面的时候才跳转.

是要这样的吗?

 

吴瑞祥 | 园豆:29449 (高人七级) | 2016-05-31 09:42
0

dudu说得对。没有end。继续执行页面去了。

czd890 | 园豆:14488 (专家六级) | 2016-05-31 10:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册