Compartilhar via


XmlSiteMapProvider.BuildSiteMap Método

Definição

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

SiteMapNode

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.

Aplica-se a

Confira também