Q:

What am I doing wrong in ASP.NET

Here is my master page code behind:
namespace mysite.MasterPages
{
    public partial class Main : System.Web.UI.MasterPage
    {
        public bool isLoggedIn;

        protected void Page_Load(object sender, EventArgs e)
        {
            isLoggedIn = Request.IsAuthenticated;      // Is the user currently logged in
        }
    }
}

Here is my register page code behind:
namespace mysite
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (((MasterPage)Page.Master).isLoggedIn)
            {
                Response.Redirect("default.aspx");
            }
        }
    }
}

I'm trying to make the isloggedIn accessible to all pages using that as a master page!  I get errors like:

Error  2   The name 'isLoggedIn' does not exist in the current context
Error  3   'System.Web.UI.MasterPage' does not contain a definition for 'isLoggedIn' and no extension method 'isLoggedIn' accepting a first argument of type 'System.Web.UI.MasterPage' could be found (are you missing a using directive or an assembly reference?)

Any help appreciated.

A:

add <%@ MasterType VirtualPath="~/Main.master" %> to your page markup.
and your this.Master's type becomes AlphaPack.MasterPages.Main instead of System.Web.UI.MasterPage. So you will be able to access it without cast: 
 this.Master.IsLoggednIn

Currently you need do next:
((AlphaPack.MasterPages.Main)this.Master).isLoggednIn

And better - create a property. And hold data not in variable but in ViewState (read Control State vs. View State):
namespace AlphaPack.MasterPages
{
    public partial class Main : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            this.IsLoggedIn = Request.IsAuthenticated;
        }

        public bool IsLoggedIn
        {
            get { return this.ViewState["isLoggedIn"] as bool? ?? false; }
            set { this.ViewState["isLoggedIn"] = value; }
        }
    }
}

And what about code-behind. I recommend to use Web App project, not Web Site project (which is out-of-date)!
Next markup syntax is used. Web app:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MyPage.aspx.cs" Inherits="MyNamespace.MyPage" MasterPageFile="~/MyMaster.master" Title="MyTitile" %>

and web site:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyPage.aspx.cs" Inherits="MyPage" MasterPageFile="~/MyMaster.master" Title="MyTitile" %>

