XmlSiteMapProvider.BuildSiteMap Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Carrega as informações de mapa do site de um arquivo XML e compila-as na memória.
public:
override System::Web::SiteMapNode ^ BuildSiteMap();
public override System.Web.SiteMapNode BuildSiteMap ();
override this.BuildSiteMap : unit -> System.Web.SiteMapNode
Public Overrides Function BuildSiteMap () As SiteMapNode
Retornos
Retorna o SiteMapNode raiz da estrutura de navegação do mapa do site.
Exceções
O XmlSiteMapProvider não foi inicializado corretamente.
- ou -
Um siteMapFile
é analisado em relação a um <siteMapNode>
que não é exclusivo.
- ou -
O arquivo especificado por siteMapFile
não tem a extensão de nome de arquivo .sitemap.
- ou -
O arquivo especificado por siteMapFile
não existe.
- ou -
Um provedor configurado no provider
de um <siteMapNode>
retorna um nó raiz nulo.
O siteMapFile
foi especificado, mas o caminho está fora da estrutura do diretório atual para o aplicativo.
Erro ao carregar o arquivo de configuração.
- ou -
O elemento superior do arquivo de configuração não é named <siteMap>
.
- ou - Existe mais de um nó superior no arquivo de configuração.
- ou -
Um filho de <siteMap>
tem um nome diferente de <siteMapNode>
.
- ou -
Um atributo inesperado é analisado em relação ao <siteMapNode>
.
- ou -
Os subelementos são aninhados sob um <siteMapNode>
em que o provider
é definido.
- ou -
O roles
do <siteMapNode>
contêm caracteres que não são válidos.
- ou -
Um url
é analisado em relação a um <siteMapNode>
que não é exclusivo.
- ou - Um SiteMapNode foi encontrado com um valor duplicado para Key.
- ou -
O ResourceKey ou Title foi especificado em um SiteMapNode ou um atributo custom
definido para o nó continha uma expressão de recurso explícita.
- ou -
Uma expressão explícita de recurso foi aplicada ao Title ou Description ou a um atributo custom
de um SiteMapNode, mas as informações explícitas não eram válidas.
- ou - Erro ao analisar o Url de um SiteMapNode.
Não é possível encontrar um provedor nomeado na coleção de provedores de mapa de site atual.
Um <siteMapNode>
que faz referência a um arquivo de mapa de site contém uma cadeia de caracteres vazia para o siteMapFile
.
Um siteMapFile
de um <siteMapNode>
usa um caminho físico.
- ou -
Erro ao tentar analisar o caminho virtual para o arquivo especificado no siteMapFile
.
Exemplos
O exemplo de código a seguir demonstra como criar uma nova instância da classe e inicializá-la para criar um XmlSiteMapProvider mapa do site com base em dados XML.
<%@ Page Language="c#" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<SCRIPT runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
// Create an instance of the XmlSiteMapProvider class.
XmlSiteMapProvider testXmlProvider = new XmlSiteMapProvider();
NameValueCollection providerAttributes = new NameValueCollection(1);
providerAttributes.Add("siteMapFile","test.sitemap");
// Initialize the provider with a provider name and file name.
testXmlProvider.Initialize("testProvider", providerAttributes);
// The BuildSiteMap method is implicitly called when the
// RootNode property is accessed.
// Prints "/myvirtualdirectory/WebForm1.aspx"
Response.Write(testXmlProvider.RootNode.Url + "<BR>");
// Prints "/myvirtualdirectory/WebForm2.aspx"
Response.Write(testXmlProvider.CurrentNode.Url + "<BR>");
}
O exemplo de código anterior usa um arquivo XML localizado na raiz virtual do ASP.NET aplicativo. O arquivo tem o seguinte formato:
<siteMap>
<siteMapNode title="RootNode" description="The root page." url="WebForm1.aspx">
<siteMapNode title="CurrentNode" description="Some sub page." url="WebForm2.aspx"/>
</siteMapNode>
</siteMap>
Comentários
O BuildSiteMap método é chamado para carregar e criar o mapa do site do armazenamento persistente.
Para o comportamento padrão quando a recortação de segurança estiver habilitada, consulte "Comentários" em IsAccessibleToUser .
Depois que o objeto analisar e carregar dados do mapa do site, todos os objetos XmlSiteMapProvider SiteMapNode carregados e SiteMapNodeCollection coleções serão feitos somente leitura. Quando o analisar a propriedade de um arquivo de mapa do site, ele converterá URLs relativas ao aplicativo, bem como XmlSiteMapProvider URLs relativas, em caminhos virtuais absolutos do Url aplicativo.
O XmlSiteMapProvider assina notificações de alteração de arquivo para o arquivo .sitemap. Se alguma alteração for feita no arquivo .sitemap, o será recarregado e a estrutura do XmlSiteMapProvider mapa do site será reconstruída.