Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
第一个链接到内部页面工作。后续尝试导致ASP.net 2.0中出现Http 404错误_Asp.net_Http_Http Status Code 404 - Fatal编程技术网

第一个链接到内部页面工作。后续尝试导致ASP.net 2.0中出现Http 404错误

第一个链接到内部页面工作。后续尝试导致ASP.net 2.0中出现Http 404错误,asp.net,http,http-status-code-404,Asp.net,Http,Http Status Code 404,我在VS2008中使用ASP.NET2.0,框架为3.5,VB.NETCodeBehind 我计划建立一个网站,在左边有一个固定的菜单,在一个固定的位置有一个树状视图。右边的第二个分区是内容。我制作了一个小的测试应用程序,看看这个概念是否可以使用母版/内容页 我想把菜单硬编码在一个地方。母版页可以很好地实现这一点。这样做的目的是,随着网站的发展,不必在单独的页面中编辑菜单 测试应用程序有一个母版页和一个内容页。这就是我想如何建立实际的网站。内容页是启动页。母版页包含菜单项。每个菜单项都链接到Co

我在VS2008中使用ASP.NET2.0,框架为3.5,VB.NETCodeBehind

我计划建立一个网站,在左边有一个固定的菜单,在一个固定的位置有一个树状视图。右边的第二个分区是内容。我制作了一个小的测试应用程序,看看这个概念是否可以使用母版/内容页

我想把菜单硬编码在一个地方。母版页可以很好地实现这一点。这样做的目的是,随着网站的发展,不必在单独的页面中编辑菜单

测试应用程序有一个母版页和一个内容页。这就是我想如何建立实际的网站。内容页是启动页。母版页包含菜单项。每个菜单项都链接到Contents.aspx,但附加了唯一的查询字符串或/关键字。内容页codebehind Load事件读取Request.Url.AbsoluteUri。然后,根据附加的查询字符串或/关键字,提取内容数据并将其推送到Contents.aspx页面上的空文本控件。在这个测试应用程序中,为了简单起见,我只需推送纯文本

在我重新单击一个链接之前,这一切都很好。这会导致HTTP404错误。我曾尝试在主控和内容加载事件的顶部使用Response.tryskipiiscustomerors=True,但没有任何帮助。我可以点击一个菜单链接几次,页面将继续重新加载。但是在链接之间来回移动会导致错误

当错误发生时,它发生在Contents.aspx加载事件开始之前

我希望能够以一种能够在asp.net主机站点上工作的方式修复此问题

MasterPage.master:

<%@ Master Language="VB" CodeFile="MasterPage.master.vb" 
Inherits="MasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
    <asp:ContentPlaceHolder id="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
    <div  style="position:fixed; top:0px; left:0px; width:300px; height:100%; 
background-color:#ddd; padding-top:10px; padding-left:10px" >
   <a href="Contents.aspx">Home</a><br />
    <a href="Contents.aspx?p=ABCD" >ABCD page</a><br />
    <a href="Contents.aspx/?p=WXYZ" >WXYZ page</a><br />
    </div>
    <div style="position:absolute; top:0px; left:310px; width:40%; 
height:100%; background-color:#eee; padding-top:10px; padding-left:10px" >
        <asp:ContentPlaceHolder id="MainContent" runat="server">

        </asp:ContentPlaceHolder>
        </div>
    </form>
</body>
</html>

我能够通过在单个aspx表单中使用相同的概念而不是Master/Content来解决这个问题。菜单现在是单一形式,代码隐藏为内容提取数据。我不知道是什么导致了HTTP404错误,但使用单个aspx表单解决了它。此外,URL必须包含查询字符串,格式为www.example.com?s=values,而不是www.example.com/keyword1-keyword2。后一种语法也抛出了404错误

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Contents.aspx.vb" 
Inherits="Contents" MasterPageFile ="~/MasterPage.master" title="Contents"%>
<asp:Content ID="Contents" ContentPlaceHolderID="MainContent" Runat="Server">
   <asp:Literal ID="Contents_Main" runat="server">
   </asp:Literal>
</asp:Content>
Partial Class Contents
    Inherits System.Web.UI.Page
    Public Sub Contents_Load(ByVal sender As Object, ByVal e As EventArgs) 
Handles Me.Load
        Try
            Dim url As System.Uri = Request.Url
            Select Case True
                Case url.AbsoluteUri.EndsWith("?p=ABCD")
                    Me.Contents_Main.Text = "content for ABCD"
                Case url.AbsoluteUri.EndsWith("?p=WXYZ")
                    Me.Contents_Main.Text = "content for WXYZ"
                Case Else
                    Me.Contents_Main.Text = "Landing Page"
            End Select
        Catch ex As Exception
            Me.Contents_Main.Text = ex.Message & ex.StackTrace
        End Try
    End Sub
End Class