Explanation:
This application was handed to me to cleanup and have it run in Net 2.0 framework. The original application had no code-behind files but used the single file method like ASP classic with <% and %>. C# re-usable functions where used in every page with a virtual include. One include that was done at the top of each page with this line <!-- #include virtual="includes/global.aspx" -->. This contained C# code. What I am trying to do is change this to code behind. I have created a basepage class. The problem is I can't get things to work as they should. I am getting a few errors. This all used to be in the same single file and now I am trying to separate what used to be a virtual include global.aspx code into a baseclass and then have all the code behinds in the application use that when the page runs. Anyone have any ideas? I know I am missing something. The code for and example page like default.aspx and the basepage class are listed below.
Default.aspx:
Errors: the name 'G_site' does not exist in the current context.
public partial class _Default : BasePage
{
private void Page_Load(object sender, EventArgs e)
// ==============================================================
LoadGlobals(sender, e);
string chk = (string)Session["loginchk"];
String loginType = "";
HttpCookie cookie = Request.Cookies["LoginType"];
if (null != cookie)
loginType = cookie.Value.ToString();
}
if ((chk == "admin") || (loginType == "Administrator"))
Response.Redirect("admin.aspx", true);
if ((chk == "power") || (loginType == "PowerUser"))
Response.Redirect("poweruser.aspx", true);
if ((chk == "publisher") || (loginType == "Publisher"))
Response.Redirect("publisher.aspx", true);
if (loginType == "Consortia")
Response.Redirect("Consortia.aspx", true);
if (loginType == "Site")
Response.Redirect("Usage.aspx", true);
if (string.Compare(G_site.site_id, string.Empty) != 0) ------- ERROR = the name 'G_site' does not exist in the current context.
{ // site
Response.Redirect("Usage.aspx");
else
Response.Redirect("Consortia.aspx");
} // END protected void Page_Load(object sender, EventArgs e)
} //END public partial class _Default : BasePage
BasePage.cs:
public class BasePage : System.Web.UI.Page
protected override void OnLoad(EventArgs e)
// ... add custom logic here ...
// Be sure to call the base class's OnLoad method!
base.OnLoad(e);
// BEGIN GLOBAL - The following was loaded with a virtual include <!-- #include virtual="includes/global.aspx" --> in the original application.
struct Site
public string site_id;
public string group_id;
public string consortia_id;
public string name;
public string publisher;
};
Site G_site;
string G_title;
string G_conn_string = "User ID=xxxxx;Password=xxxxxxxx;database=Net;server=york.xxxxx.com;Connection Timeout=60;";
public void LoadGlobals(Object sender, EventArgs e)
SqlConnection conAIP;
SqlCommand cmdSelect;
SqlDataReader dtrAccessControl;
SqlDataReader dtrConsortia;
SqlDataReader dtrSite;
SqlDataReader dtrGroup;
SqlDataReader dtrPublisher;
G_site.site_id = "";
G_site.name = "";
G_site.group_id = "";
G_site.publisher = "";
conAIP = new SqlConnection(G_conn_string);
try
conAIP.Open();
if (User.Identity.IsAuthenticated)
cmdSelect = new SqlCommand("select site_id from AIPSite_Access_Control where user_id = '" + User.Identity.Name + "'", conAIP);
dtrAccessControl = cmdSelect.ExecuteReader();
while (dtrAccessControl.Read())
G_site.site_id = dtrAccessControl["site_id"].ToString();
dtrAccessControl.Close();
if ((string.Compare(G_site.site_id, string.Empty) != 0) && (((string)Session["loginchk"]) != "publisher"))
cmdSelect = new SqlCommand("select site_name from AIPSites where site_id = '" + G_site.site_id + "'", conAIP);
dtrSite = cmdSelect.ExecuteReader();
while (dtrSite.Read())
G_site.name = dtrSite["site_name"].ToString();
dtrSite.Close();
cmdSelect = new SqlCommand("select group_id from AIPGroup_Members where site_id = '" + G_site.site_id + "'", conAIP);
dtrGroup = cmdSelect.ExecuteReader();
while (dtrGroup.Read())
G_site.group_id = dtrGroup["group_id"].ToString();
dtrGroup.Close();
{ // consortia
cmdSelect = new SqlCommand("select consortium_id from AIPConsortia_Access_Control where user_id = '" + User.Identity.Name +
"'", conAIP);
G_site.consortia_id = dtrAccessControl["consortium_id"].ToString();
cmdSelect = new SqlCommand("select consortium_name from AIPConsortia where consortium_id = '" + G_site.consortia_id + "'",
conAIP);
dtrConsortia = cmdSelect.ExecuteReader();
while (dtrConsortia.Read())
G_site.name = dtrConsortia["consortium_name"].ToString();
dtrConsortia.Close();
cmdSelect = new SqlCommand("select publisher from AIPPublisher_Access_Control where user_id = '" + User.Identity.Name +
dtrPublisher = cmdSelect.ExecuteReader();
while (dtrPublisher.Read())
G_site.publisher = dtrPublisher["publisher"].ToString();
Response.Write("<!-- pub lookup:" + G_site.publisher + " -->");
dtrPublisher.Close();
} // END Else ((string.Compare(G_site.site_id, string.Empty)
} // END if (User.Identity.IsAuthenticated)
} // END try
catch (Exception ex)
//Response.Write("<!-- exception: " + ex.Message + " -->");
finally
conAIP.Close();
Response.Write("<!-- user=" + User.Identity.Name + ";publisher=" + G_site.publisher + "; site_id=" + G_site.site_id + " -->");
// END GLOBAL
} // END public class BasePage : System.Web.UI.Page