led*_*per 2 asp.net asp.net-mvc ssl https
我完全按照本教程:
http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx
但是当我在本地运行并尝试从非https页面(如home/index)导航到我用[RequireHttps]装饰的页面时,我得到了通用的"SSL连接错误"消息.
我讨厌发布这样一个通用的问题,但你能想到我错过的任何东西吗?它是一个大型的asp.net mvc4应用程序,我在项目中启用了ssl,它显示了ssl url.手动导航到ssl url也不起作用.
HALP!
注意:在Visual Studio 2012中使用IIS Express
根据评论,我得到的错误是无法建立SSL连接.
在本地测试时,您不应该使用Https.我已经创建了自己的Https过滤器,它将忽略localhost中的所有本地流量,并且只能在暂存和实时环境中使用.您可以修改代码以满足您的需要.
public class RequireSSLAttribute : FilterAttribute, IAuthorizationFilter {
public virtual void OnAuthorization(AuthorizationContext filterContext) {
if(filterContext == null) {
throw new ArgumentNullException("filterContext");
}
if(!filterContext.HttpContext.Request.IsSecureConnection) {
HandleNonHttpsRequest(filterContext);
}
}
protected virtual void HandleNonHttpsRequest(AuthorizationContext filterContext) {
if(filterContext.HttpContext.Request.Url.Host.Contains("localhost")) return;
if(!String.Equals(filterContext.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase)) {
throw new InvalidOperationException("The requested resource can only be accessed via SSL");
}
string url = "https://" + filterContext.HttpContext.Request.Url.Host + filterContext.HttpContext.Request.RawUrl;
//ignore if the request is from a child action
if(!filterContext.IsChildAction) {
filterContext.Result = new RedirectResult(url);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这就是你如何使用它......
[RequireSSL(Order=1), Authorize(Order=2)]
public PartialViewResult AccountHeader() {
blah...blah...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5366 次 |
| 最近记录: |