2010-12-13 207 views
2

基本上我正在使用的应用程序有一堆参数,这些参数都是从一个xml配置文件控制的,该配置文件包含运行applcation(live和dev)的每台机器的配置。我遇到的问题是,我希望能够控制基于表单的身份验证requiressl字段,以便在配置文件中可以指定此标志。requiressl表单身份验证

这应该会导致在live环境中requiressl标志为true,并且通过强制ssl并创建一个安全的auth cookie。对于开发环境,我不希望在所有开发机器上执行ssl。

我不想操纵web.config文件来做到这一点。我希望我的应用程序代码读取xml配置并相应地设置它们。

我已经尝试使用反射器进入密封formsauthentication类,并已发现requiressl属性只有一个get方法,没有设置方法。

我也尝试过实现formsauthentication配置类,无济于事。 - 我不确定我是否正确地做到了这一点。

任何帮助寻找一个可能的解决方案,将不胜感激。

亲切的问候,

Gurpreet

尝试1:

随后我已经试过这样:

PropertyInfo field = typeof (FormsAuthentication).GetProperty("RequireSSL"); 
field.SetValue(typeof(FormsAuthentication), true, null) 

我得到一个错误信息说 “属性设置方法不发现“

尝试2:解决

的typeof(FormsAuthentication).GetField( “_ RequireSSL”,BindingFlags.Static | BindingFlags.NonPublic).SetValue(typeof(FormsAuthentication),Config.Secure);

+0

你不想修改web.config文件的原因是什么?该文件的主要目的之一是将其配置为特定的环境,这正是你想要做的。 – 2010-12-14 13:59:56

回答

1

尽管不推荐,但您可以使用反射来修改专用字段(属性的后备存储)。

尝试here