即使宣布公开,财产也会失去价值

时间:2014-03-14 16:22:24

标签: c# asp.net properties encapsulation

我在SiteMinder.CS中有一个文件App_code,我在其中设置了访问该网页的UserID

public class SiteMinder : IHttpModule
    {
        public string UserID { get; set; }

        public void Init(HttpApplication context)
        {
            context.PreRequestHandlerExecute += new EventHandler(Application_PreRequestHandler);
        }

        private void Application_PreRequestHandler(Object source, EventArgs e)
        {
            if (HttpContext.Current.Request.Headers != null)
            {
                NameValueCollection coll = HttpContext.Current.Request.Headers;
                UserID = coll["uid"]; // Doesn't have NULL value
            }
        }
    }

在另一个网页UserDetails.aspx.cs文件中,我正在尝试访问此UserID,但它的值为NULL

public partial class UserDetails : System.Web.UI.Page
{

    protected string SessionUser { get; set; }
    protected void Page_Load(object sender, EventArgs e)
    {
        SiteMinder objSite = new SiteMinder();
        SessionUser = objSite.UserID;//Returns NULL
    }
}

所有这些都在相同的命名空间下。请告诉我这里我错了。

1 个答案:

答案 0 :(得分:5)

您正在创建 SiteMinder对象。这与在其上设置属性的对象不同,因此该属性将具有默认值(null)。

您需要获取对设置属性的原始SiteMinder对象的引用 - 或将值存储在其他位置(例如HttpContext)。