我使用操作筛选器属性这样
public class RequireSSL : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpRequestBase req = filterContext.HttpContext.Request;
HttpResponseBase res = filterContext.HttpContext.Response;
//Check if we're secure or not and if we're on the local machine
if (!req.IsSecureConnection && !req.IsLocal)
{
var builder = new UriBuilder(req.Url)
{
Scheme = Uri.UriSchemeHttps,
Port = 443
};
res.Redirect(builder.Uri.ToString());
}
base.OnActionExecuting(filterContext);
}
}
然后,我创建了一个名为SecureController一个基本的控制器具有这种属性
[RequireSSL]
public class SecureController : Controller
{
}
那么任何控制器,我想成为SSL将继承该控制器。 希望能够帮助 您只需确保所有“页面”都是控制器操作返回的视图。如果需要的话,这应该是一个非常容易的改变。
您的意思是页面? html文件? – VJAI
http://serverfault.com/questions/165835/how-to-restrict-access-to-web-pages-for-https – VJAI
感谢您的回应,马克。 “页面”是指所有的HTML页面,JS脚本,图像文件。我已经推断了这些问题(我认为):包括他们使用@ Url.Content,它已被替换为直接的“https:// ...”链接。但是,我使用的是DevExpress组件,它们有一个通过“DXR.axd”访问的处理程序,它不使用加密来请求资源(例如CSS文件,图像),我不确定是否可以更改。有些东西仍然不安全地被访问,我需要揪出它或者死掉。 :) –