相关疑难解决方法(0)

ASP.NET MVC:如何在localhost上自动禁用[RequireHttps]?

我希望我的登录页面只是SSL:

    [RequireHttps]
    public ActionResult Login()
    {
        if (Helper.LoggedIn)
        {
            Response.Redirect("/account/stats");
        }

        return View();
    }
Run Code Online (Sandbox Code Playgroud)

但显然,当我开发和调试我的应用程序时,它无法在localhost上运行.我不想将IIS 7与SSL证书一起使用,如何自动禁用RequireHttps属性?

更新

基于StackOverflow用户和ASP.NET MVC 2源代码提供的信息,我创建了以下类来解决问题.

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 …
Run Code Online (Sandbox Code Playgroud)

iis debugging asp.net-mvc ssl localhost

28
推荐指数
4
解决办法
1万
查看次数

标签 统计

asp.net-mvc ×1

debugging ×1

iis ×1

localhost ×1

ssl ×1