GVKun编程网logo

asp.net-mvc-3 – mvc3 https&http

18

本篇文章给大家谈谈asp.net-mvc-3–mvc3https&http,同时本文还将给你拓展Asp.NetMVCHttps设置、ASP.NETMVC&C#:HttpStatusCodeResult

本篇文章给大家谈谈asp.net-mvc-3 – mvc3 https&http,同时本文还将给你拓展Asp.Net MVC Https设置、ASP.NET MVC&C#:HttpStatusCodeResult()vs HttpNotFound()、asp.net – 如何在MVC3中使用https生成绝对URL?、asp.net-mvc – 404 Asp.Net中的Http错误处理程序MVC(RC 5)等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

asp.net-mvc-3 – mvc3 https&http

asp.net-mvc-3 – mvc3 https&http

我正在将一个asp.net应用程序转换为mvc3.让我说我有一个登录页面,需要https和每个其他页面只需要http如何重定向登录到https并保留所有其他页面在http?

任何建议都会很棒!

解决方法

RequireHttpsAttribute课可能是你想要的.
[RequireHttps]
public ActionResult SignIn() {
   return View();
}

Asp.Net MVC Https设置

Asp.Net MVC Https设置

1.   IIS设置

1.1 创建SSL证书

   点击左侧菜单栏顶部,点击“功能视图”里的“服务器证书”:

         点击“创建自动签名证书”创建自动签名证书:

1.2 设置SSL证书

         点开网站,在“功能视图”里点击“SSL设置”:

         如图,设置SSL:

1.3 绑定SSL证书

         点开网站,在右侧“操作”栏点击“绑定”:

         添加“网站绑定”,选择https及刚刚创建的SSL证书,主机名(也就是域名)根据需要选设(IIS7默认不支持,需要在配置文件applicationHost.config里进行设置,详见注):

         【注】域名也可以通过配置进行设置:

      打开C:\Windows\system32\inetsrv\config\applicationHost.config在里面找到

<bindings>
    <binding protocol="https" bindingInformation="*:443:" />
     <binding protocol="http" bindingInformation="*:80:www.yourdomain.com" />
</bindings>

  找到https的配置项目,修改为:

<binding protocol="https" bindingInformation="*:443:www.yourdomain.com"/>

  这里面需要注意的是:bindings节点有多个,需要找到你配置的站点,默认是

<binding protocol="https" bindingInformation="*:443" />

2.强制使用https

  MVC操作非常简单,只需要在网站Index设置RequireHttps特性即可:

        [RequireHttps]
        public ActionResult Index()
        {
            return View();
        }

  这是一种投机的设置,合理的做法应该是在项目Global.asax文件 Application_Start中添加过滤:

GlobalFilters.Filters.Add(new RequireHttpsAttribute());

3.https使用中的问题

3.1 百度地图的问题

  https的网站使用百度地图,如果你引用的地址没写对的话,加载不出来百度地图,被认为是不安全的JS内容。解决方式:

  https://api.map.baidu.com/api?v=2.0&ak=你的密钥&s=1

  加上s=1代表引用的是https的。

3.2 加密会话(SSL)Cookie 中缺少 Secure 属性问题

       服务器开启了Https时,cookie的Secure属性应设为true,否则,在进行IBM AppScan安全扫描时,就会扫出下面的问题:

 

  解决办法:

  1. 修改web.config,添加: 

<system.web>
  <httpCookies httpOnlyCookies="true" requireSSL="true" />
<system.web>

  2. 修改后台写Cookies时的设置 cookie.Secure = true:

1 HttpResponse response = HttpContext.Current.Response;
2 var cookie = new HttpCookie(key, value);
3 cookie.HttpOnly = true;
4 cookie.Path = "/";
5 cookie.Expires = DateTime.Now.AddHours(1);
6 cookie.Secure = true; 
7 response.AppendCookie(cookie);

 

参考资料:

IIS配置HTTPS

C# MVC 网站将http强制跳转到https
IBM AppScan 安全扫描:加密会话(SSL)Cookie 中缺少 Secure 属性 处理办法

ASP.NET MVC&C#:HttpStatusCodeResult()vs HttpNotFound()

ASP.NET MVC&C#:HttpStatusCodeResult()vs HttpNotFound()

在ASP.NET MVC中,返回这个有什么区别:

return new HttpStatusCodeResult(HttpStatusCode.NotFound);

还有这个:

return HttpNotFound();

解决方法

区别在于HttpStatusCodeResult可以让您更好地控制可以返回的HTTP状态代码,因为它允许您在HttpStatusCode枚举中指定任何预定义的状态代码. HttpNotFound始终返回HTTP状态代码404.

asp.net – 如何在MVC3中使用https生成绝对URL?

asp.net – 如何在MVC3中使用https生成绝对URL?

我正在使用MVC3,并尝试从https提供内容,问题是当我打电话Url.Content文件仍然从http使用相对URL提供。我以为这个问题在MVC3中被解决了,但我似乎找不到任何解决方案。有人知道这个问题在MVC3中是如何解决的,以及如何完成它,还是需要创建自己的帮助方法来生成基于协议的绝对URL?

解决方法

您可以使用 VirtualPathUtility.ToAbsolute实现自己的解决方案。可能是这样的:
public static class UrlHelperExtension {
  public static string Absolute(this UrlHelper url,string relativeOrAbsolute) {
    var uri = new Uri(relativeOrAbsolute,UriKind.RelativeOrAbsolute);
    if (uri.IsAbsoluteUri) {
      return relativeOrAbsolute;
    }
    // At this point,we kNow the url is relative.
    return VirtualPathUtility.ToAbsolute(relativeOrAbsolute);
  }
}

你会喜欢的:

@Url.Absolute(Url.Content("~/Content/Image.png"))

(没有自己测试,随意玩弄,使其正常工作。)

这有助于您为您的内容文件生成绝对URL。为了更改生成的URL的方案,您可以创建一个额外的扩展方法来处理给定URL的方案,以使其成为HTTPS或其他。

正如哈立德在评论中指出的那样,类似的扩展方法已经可以在各种开源项目中使用,您可以使用(鉴于许可证许可)。一个例子可以发现@L_301_1@。

asp.net-mvc – 404 Asp.Net中的Http错误处理程序MVC(RC 5)

asp.net-mvc – 404 Asp.Net中的Http错误处理程序MVC(RC 5)

如果没有框架抛出异常500错误代码,我如何处理404错误?

解决方法

http://jason.whitehorn.ws/2008/06/17/Friendly-404-Errors-In-ASPNET-MVC.aspx给出以下说明:

添加通配符路由规则作为最终规则:

routes.MapRoute("Error","{*url}",new { controller = "Error",action = "Http404" });

任何与其他规则不匹配的请求都会路由到错误控制器的Http404操作,您还需要配置它:

public ActionResult Http404(string url) {
    Response.StatusCode = 404;
    ViewData["url"] = url;
    return View();
}

关于asp.net-mvc-3 – mvc3 https&http的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Asp.Net MVC Https设置、ASP.NET MVC&C#:HttpStatusCodeResult()vs HttpNotFound()、asp.net – 如何在MVC3中使用https生成绝对URL?、asp.net-mvc – 404 Asp.Net中的Http错误处理程序MVC(RC 5)的相关信息,请在本站寻找。

本文标签: