gpt4 book ai didi

asp.net - 让 https 在 asp.net MVC4 应用程序中本地工作

转载 作者:太空宇宙 更新时间:2023-11-03 12:55:57 27 4
gpt4 key购买 nike

我完全遵循了本教程:

http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx

但是当我在本地运行并尝试从非 https 页面(如主页/索引)导航到我用 [RequireHttps] 修饰的页面时,我收到了通用的“SSL 连接错误”消息。

我讨厌发布这样一个笼统的问题,但你能想到我遗漏了什么吗?这是一个大型的 asp.net mvc4 应用程序,我在项目中启用了 ssl,它显示了 ssl url。手动导航到 ssl url 也不起作用。

停下!

注意:在 visual studio 2012 中使用 IIS Express

根据评论,我得到的错误是无法建立 SSL 连接。

最佳答案

在本地测试时不应该使用 Https。我已经创建了自己的 Https 过滤器,它将忽略本地主机中的所有本地流量,并且仅适用于暂存和实时环境。您可以根据需要修改代码。

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);
}
}
}

这就是您使用它的方式...

[RequireSSL(Order=1), Authorize(Order=2)]
public PartialViewResult AccountHeader() {

blah...blah...

}

关于asp.net - 让 https 在 asp.net MVC4 应用程序中本地工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13689232/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com