使用Site.Master内容无法呈现默认页面

时间:2012-11-29 22:00:04

标签: asp.net

我在GoDaddy.com上有一个托管帐户,运行.NET 4.0的IIS 7服务器,我正处于为教会开发网站的早期阶段。内容是一个免费的基于CSS的模板,我已经转移到带有母版页的ASP.NET Web App。 (如果对内容的批评是必要的,请记住这是一个非常早期的发展阶段...但我对任何建议持开放态度。:))

出于某种原因,当我输入默认页面的完整URL时,页面会正确呈现。但是,如果我只输入没有页面名称的文件夹名称,我只会从页面本身获取内容。

自己看看:

http://www.websmithsllc.com/lpacftp/Home.aspx

http://www.websmithsllc.com/lpacftp

我不认为这是我在内容页面和母版页之间的连接问题,因为当我使用完整的URL时它会正确呈现。因此,我认为问题出在以下三个方面之一:

  1. 我如何发布:一键到FTP目录
  2. 项目设置:目前Home.aspx是起始页
  3. 我的主机上的设置存在问题。
  4. 我真的希望问题不是#3,因为到目前为止我的经验是他们的技术支持在Visual Studio / IIS开发和发布方面严重缺乏。

    现在,一些额外的线索。我知道Site.Master文件正在呈现,至少在某种程度上。正在显示的菜单是在Site.Master.Page_Load事件处理程序中创建的:

        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);
        }
    

    静态方法:         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...
    

    在这种情况下,p.Title应该==“Home”,但代码正在响应,好像不是,我不知道如何(如果可以)调试实时查看正在发生的事情。最后,如果仔细查看第二个链接,您会注意到一些ASP.NET广告文本 - 它们似乎来自BodyContent asp:Content对象中的库存“Default.aspx”文件。但是,查看属性/ Web选项卡,我可以看到启动操作是Specific Page:Home.aspx。

    所以我希望我没有在这里添加大量不必要的信息,但至少对于有经验的人来说,帮助我弄清楚我在这里做错了什么。

    提前感谢你能为我提供的任何帮助。

2 个答案:

答案 0 :(得分:0)

您需要一个默认页面。创建它,然后在Page_Load后面的代码中写:

的Response.Redirect( “Home.aspx”);

或者在IIS中更改默认页面。或者将您的主页更改为Default.aspx(并重命名该类和页面指令)。

在这三个中,创建一个重定向到Home.aspx的Default.aspx页面可能是最简单的。

答案 1 :(得分:0)

是的,MatthewMartin是对的。您的托管服务的IIS未配置为选择“Home.aspx”作为默认页面。您需要让它们将其添加到IIS配置中,或者将主页重命名为Default.aspx,或者创建一个重定向到Home.aspx的“虚拟”Default.aspx。