I have a hosting account with GoDaddy.com, IIS 7 server running .NET 4.0, and I am in the early stages of developing a web site for our church. The content is a free CSS based template I have moved into an ASP.NET Web App with Master pages. (If critique on content is necessary please keep in mind this is a very early stage of development…but I am open to any suggestions. 🙂 )
For some reason, when I enter the full URL to the default page, the page renders properly. However, if I only enter the folder name without the page name, I only get the content form the page itself.
See for your self:
http://www.websmithsllc.com/lpacftp/Home.aspx
http://www.websmithsllc.com/lpacftp
I don’t think this is an issue with my wire-up between the content page and the masterpage as it will properly render when I use the full URL. Therefore, I assume the issue is in one of three areas:
- How I am publishing: One Click to an FTP directory
- The project settings: Currently Home.aspx is the start page
- An issue with the settings on my host.
I really hope the issue isn’t #3 because my experience so far has been that their tech support is severely lacking in the area of Visual Studio / IIS development and publishing.
Now, some additional clues. I KNOW that the Site.Master file is being rendered, at least to some extent. The menu that is being displayed is created in the Site.Master.Page_Load event handler:
protected void Page_Load(object sender, EventArgs e)
{
//Load sidebar content
Page p = HttpContext.Current.CurrentHandler as Page;
menuContent.Text = Helpers.StaticHelperMethods.GenerateMenuContent(p.Title);
}
Static method:
public static string GenerateMenuContent(String pageTitle)
{
StringBuilder menu = new StringBuilder();
if (pageTitle == "Home")
{
menu.Append("<a href=\"Home.html\" class=\"but but_t\" title=\"Home Page\">Home</a>\n");
}
else
{
menu.Append("<a href=\"Home.html\" class=\"but\" title=\"Home Page\">Home</a>\n");
}
More similar code...
In this case, p.Title should == “Home”, but the code is responding as though is does not, and I don’t know how (if I can) debug live to see what’s going on. Finally, if you look closely at the second link, you’ll notice some stock ASP.NET advertising text- that appears to be coming from the stock “Default.aspx” file in the BodyContent asp:Content object. However, looking at the properties/Web tab I can see that the startup action is Specific Page : Home.aspx.
So- hopefully I haven’t added a ton of unnecessary info here, but at least enough for someone with more experience to help me figure out what I’m doing wrong here.
Thanks in advance for whatever help you can offer me on this.
You need a default page. Create it and then in the code behind in Page_Load write:
Response.Redirect(“Home.aspx”);
Or change your default page in IIS. Or change your home page to Default.aspx (and rename the class and the page directive).
Of the three, creating a Default.aspx page that redirects to Home.aspx is likely the easiest.