Asp.net Can';找不到文件

Asp.net Can';找不到文件,asp.net,xml,vb.net,menu,submenu,Asp.net,Xml,Vb.net,Menu,Submenu,我正在asp.net中开发一个自定义菜单系统,根据从网站主菜单中选择的菜单项动态填充水平菜单 第二个菜单是从网站根目录中的自定义XML文件填充的。 (详情请参见) 在我写那篇文章的时候,它确实起了作用,但是我的开发环境已经改变了,现在我收到一个错误,说找不到XML文件 这是我的密码: Imports System.Xml Partial Class Site Inherits System.Web.UI.MasterPage Protected Sub Menu1_Menu

我正在asp.net中开发一个自定义菜单系统,根据从网站主菜单中选择的菜单项动态填充水平菜单

第二个菜单是从网站根目录中的自定义XML文件填充的。 (详情请参见)

在我写那篇文章的时候,它确实起了作用,但是我的开发环境已经改变了,现在我收到一个错误,说找不到XML文件

这是我的密码:

Imports System.Xml

Partial Class Site
    Inherits System.Web.UI.MasterPage


    Protected Sub Menu1_MenuItemClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MenuEventArgs) Handles Menu1.MenuItemClick
        Select Case e.Item.Value.ToString
            Case "Team"
                Dim doc As New XmlDocument
                doc.Load("~/Submenus.xml")

                Dim NameNodes As XmlNodeList = doc.SelectNodes("/TeamMenu/item/name")
                Dim URLNodes As XmlNodeList = doc.SelectNodes("/TeamMenu/item/url")

                If NameNodes.Count = URLNodes.Count Then
                    For i As Integer = 0 To NameNodes.Count - 1
                        Dim m As New MenuItem
                        m.Text = NameNodes.Item(i).FirstChild.InnerText
                        m.NavigateUrl = URLNodes.Item(i).FirstChild.InnerText

                        Menu2.Items.Add(m)
                    Next
                End If
            Case "Investments"
                Dim doc As New XmlDocument
                doc.Load("~/Submenus.xml")

                Dim NameNodes As XmlNodeList = doc.SelectNodes("/InvestmentsMenu/item/name")
                Dim URLNodes As XmlNodeList = doc.SelectNodes("/InvestmentsMenu/item/url")

                If NameNodes.Count = URLNodes.Count Then
                    For i As Integer = 0 To NameNodes.Count - 1
                        Dim m As New MenuItem
                        m.Text = NameNodes.Item(i).FirstChild.InnerText
                        m.NavigateUrl = URLNodes.Item(i).FirstChild.InnerText

                        Menu2.Items.Add(m)
                    Next
                End If
            Case "Social Responsibility"
                Dim doc As New XmlDocument
                doc.Load("~/Submenus.xml")

                Dim NameNodes As XmlNodeList = doc.SelectNodes("/InvestmentsMenu/item/name")
                Dim URLNodes As XmlNodeList = doc.SelectNodes("/InvestmentsMenu/item/url")

                If NameNodes.Count = URLNodes.Count Then
                    For i As Integer = 0 To NameNodes.Count - 1
                        Dim m As New MenuItem
                        m.Text = NameNodes.Item(i).FirstChild.InnerText
                        m.NavigateUrl = URLNodes.Item(i).FirstChild.InnerText

                        Menu2.Items.Add(m)
                    Next
                End If
        End Select
    End Sub
End Class
下面是我得到的错误:
找不到路径“c:\windows\system32\inetsrc\~\Submenus.xml”的一部分。

Menu2只是页面主菜单正下方的一个完全空的
控件

有人能告诉我我做错了什么吗


提前感谢。

XmlDocument.Load需要一个文件路径,您可以在其中提供虚拟路径。尝试将其更改为:

doc.Load(Page.MapPath("~/Submenus.xml"))

如果使用doc.Load(“~/Submenus.xml”),则此xml必须位于项目中。否则,您必须使用server.mappath.

消除错误,但子菜单不显示。可能与XML有关,我现在将研究它。您的回答确实让我想起了Server.MapPath(),它在这种情况下也可以工作(仅供参考,您是1
short^)