Simple login user authentication
Let's review from top to bottom.  

Page_Load()


No need to have a try..catch here if the code only throw inside the catch. Omitting the try..catch will lead to the same result and removes one level of indentation.  


btnSignIn_Click()


Like in Page_Load() there is no need to have that try..catch either.  
Classes should be named using PascalCase casing (see: .NET Naming Guidelines), hint: C_User. The same applies to naming of methods. hint: Get_LoginUser(() 
By reversing the condition of if(dt != null &amp;&amp; dt.Rows.Count &gt; 0) you can return early hence there won't be the need of the else part which saves you another level of indentation like so  

if(dt == null || dt.Rows.Count == 0)
{  
    Response.Redirect("LoginUser.aspx", false);
    return;
}

DataRow dr = dt.Rows[0];
Session["username"] = dr["USERNAME"].ToString();
....

As regions may be acceptable inside a class they are phroned upon inside a method. Having a region inside a method is usually a clear sign that this method is doing to much.  
Why wasting vertical space by first declaring an int and setting it to 0 and on the next line of code another value is assigned to it. Just do  

Int16 userRole = Convert.ToInt16(Session["role"]);

The switch could be improved by replacing the magic numbers with meaningful constants.