Anas Ghanem

ASP.NET from the middle east

Syndication

Sponsors

News


    Subscribe in a reader

May 2008 - Posts

before a couple of days ,I started to work on Vista and IIS 7, and since the default installation for Vista doesn't includes IIS7 ,

I started by trying to  install IIS 7, I went to control panel, Programs and features, then to " turns windows features on or off",

After the dialog displayed , I navigate to application development features and checked asp.net and IIS management console,

then I selects to install them , after the installation finishes , I prompted to restart the computer and i did ,

after i logged in a gain , and after i added an existing website to in IIS, i requested the website from the browser,then the problems started ,

the browser displayed an empty page with no images , no scripts ... I tried to restart, reinstall with no , after many  hours I find it , 

I didn't check the "Static Content service" , look at the red Box in the Image below :

Note that the "static content" service is responsible for serving the Static contents like images, scripts , style sheets file, ....

In my opinion , if the user doesn't checked this option( which will be checked by default if you checked the " internet information service " root node  ) windows vista must displays an alert or something , so that the user  doesn't waste the time to know the problem ...

So I posted this problem  and hoping to help some one in the future ,

 

Best Regards,

Anas Ghanem 

Posted by anas | 5 comment(s)
Filed under: ,

While I'm helping the Folks on asp.net forums, I noticed that there is a lot of develoeprs trying to access the Http Session in Page Constructor !

Most of them used this to Implement a kind of Secured Base Page  that checks the session value ,and if its missing , it will redirect to login or whatever page,

some of them write this Class :

public class AdminSecuredPage : System.Web.UI.Page
{

    public AdminSecuredPage()
    {
        if (Session["AdminUser"] == null) {
            Response.Redirect("~/login.aspx");
        }

    }

}

Note that the above class will throws HttpException ,

which tells :

"Session state can only be used when enableSessionState is set to true, either in a configuration file or in the Page directive. Please also make sure that System.Web.SessionStateModule or a custom session state module is included in the <configuration> ..."
 

 well the above exception will be thrown because the session is not ready when the Page constructor was called .

 

The Solution : 

One solution is to Move the Code from Page Constructor to  Page_init , Note that the page_init for this class will be called before the the Page_init of its Sub Page Class,

so you can check the Session value as follows:

public class AdminSecuredPage : System.Web.UI.Page
{
    public AdminSecuredPage()
    {}
  
    protected override void OnInit(EventArgs e)
    {
        // if the user is not Admin , redirect to Login Page
        if (Session["AdminUser"] == null)
            Response.Redirect("~/login.aspx");

        // this needed to initialize its base page class
        base.OnInit(e);
    }
}

 

Edit 1:

Note that using the session for that purpose is not a good practice , because there is al ready a built in FormsAuthentication services for asp.net,

however , i will not discuss the security approches here...

 

Edit 2:

I want to mention that you should also avoid accessing the Session in the Page Local Variables , like this example ( look at the Bold word)

Partial Class Page1

Inherits System.Web.UI.Page

 Private LocalVar as string=Session("MyVar")


that will also throw the HttpException !

 

Hope It Helps,

Anas Ghanem

Posted by anas | 9 comment(s)
Filed under: ,
More Posts