相关疑难解决方法(0)

asp.net中强制https用于整个网站的最佳方式?

大约6个月前,我推出了一个网站,每个请求都需要通过https.当我找到确保页面的每个请求都通过https的唯一方法是在页面加载事件中检查它.如果请求不是通过http,我会response.redirect(" https://example.com ")

有没有更好的方法 - 理想情况下web.config中的一些设置?

c# vb.net asp.net https webforms

185
推荐指数
7
解决办法
15万
查看次数

ASP.NET MVC RequireHttps仅适用于生产

我想使用RequireHttpsAttribute来防止将不安全的HTTP请求发送到操作方法.

C#

[RequireHttps] //apply to all actions in controller
public class SomeController 
{
    [RequireHttps] //apply to this action only
    public ActionResult SomeAction()
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

VB

<RequireHttps()> _
Public Class SomeController

    <RequireHttps()> _
    Public Function SomeAction() As ActionResult
        ...
    End Function

End Class
Run Code Online (Sandbox Code Playgroud)

不幸的是,ASP.NET Development Server不支持HTTPS.

如何在发布到生产环境时使我的ASP.NET MVC应用程序使用RequireHttps,而不是在ASP.NET Development Server上的开发工作站上运行时?

asp.net-mvc ssl https visual-studio

121
推荐指数
6
解决办法
4万
查看次数

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万
查看次数

如何确定所有对象是否在给定的命名空间中可序列化?

一些背景知识:我们要求所有DTO对象都是可序列化的,以便它们可以存储在会话中或缓存中.

您可以想象,这非常烦人且容易出错...是否有任何自动化方式(理想情况下作为构建过程的一部分)使用Visual Studio 2010来确保命名空间中的所有类都使用[Serializable]属性进行标记?

.net serialization build-process

3
推荐指数
1
解决办法
306
查看次数