A Jammed Up Session – The Daily WTF

Date:

Share:

Andre has inherited a rather antique ASP .Net WebForms application. It’s a large one, with many pages in it, but they all follow a certain pattern. Let’s see if you can spot it.

protected void btnSearch_Click(object sender, EventArgs e)
{
    ArrayList paramsRel = new ArrayList();
    paramsRel["Name"] = txtNome.Text;
    paramsRel["Date"] = txtDate.Text;
    Session["paramsRel"] = paramsRel;
   
    List clients = Controller.FindClients();
    
}

Now, at first glance, this doesn’t look terrible. Using an ArrayList as a dictionary and frankly, storing a dictionary in the Session object is weird, but it’s not an automatic red flag. But wait, why is it called paramsRel? They couldn’t be… no, they wouldn’t…

public List FindClients()
{
    ArrayList paramsRel = (ArrayList)Session["paramsRel"];
    string name = (string)paramsRel["Name"];
    string dateStr = (string)paramsRel["Date"];
    DateTime date = DateTime.Parse(dateStr);
   
   
}

Now there’s the red flag. paramsRel is how they pass parameters to functions. They stuff it into the Session, then call a function which retrieves it from that Session.

This pattern is used everywhere in the application. You can see that there’s a vague gesture in the direction of trying to implement some kind of Model-View-Controller pattern (as FindClients is a member of the Controller object), but that modularization gets undercut by everything depending on Session as a pseudoglobal for passing state information around.

The only good news is that the Session object is synchronized so there’s no thread safety issue here, though not for want of trying.

[Advertisement]
Keep all your packages and Docker containers in one place, scan for vulnerabilities, and control who can access different feeds. ProGet installs in minutes and has a powerful free version with a lot of great features that you can upgrade when ready.Learn more.

Source link

Subscribe to our magazine

━ more like this

Give First: Kindle Version Available Today

The Kindle version of Give First: The Power of Mentorship launched today and is available for 50% of the regular Kindle price.Brad the Book...

Entitled employee in her 60s “accidentally” retires: ‘Pinnacle level pettiness’ – FAIL Blog

This employee thought she had the perfect way to always ensure she got her time off approved. Instead of talking to her boss, she'd...

Eliana Rodriguez, Designer, Gil Rodriguez

“Before there were ready-to-wear designers, all of the rich ladies in Venezuela would go to a nice fabric store and have a tailor make...

Analog(ue) #215: Pull on That Thread

#215: Pull on That Thread July 16th, 2023 · 89 minutes Threads Vibe Check, Danny Ric returns, celebrating anniversaries, and avoiding reunions. This episode of Analog(ue) is sponsored by: Human Creator Alliance:...