XmlSiteMapProvider.BuildSiteMap Método

Definição

Carrega a informação do mapa do site a partir de um ficheiro XML e constrói-a em 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

Devoluções

Devolve a raiz SiteMapNode da estrutura de navegação do mapa do sítio.

Exceções

Não XmlSiteMapProvider foi inicializado corretamente.

-ou-

A siteMapFile é analisado para um <siteMapNode> que não é único.

-ou-

O ficheiro especificado por o siteMapFile não tem a extensão de nome .sitemap.

-ou-

O ficheiro especificado por o siteMapFile não existe.

-ou-

Um fornecedor configurado em o provider<siteMapNode> de devolve um nó raiz nulo.

O siteMapFile é especificado, mas o caminho está fora da estrutura atual de diretórios da aplicação.

Há um erro ao carregar o ficheiro de configuração.

-ou-

O elemento superior do ficheiro de configuração não named <siteMap>é .

-ou-

Existem mais do que um nó superior no ficheiro de configuração.

-ou-

Um filho de o <siteMap> tem um nome diferente de <siteMapNode>.

-ou-

Um atributo inesperado é analisado para o <siteMapNode>.

-ou-

Os subelementos estão aninhados por baixo de um <siteMapNode> onde o provider está definido.

-ou-

Os roles de contêm <siteMapNode> caracteres que não são válidos.

-ou-

A url é analisado para um <siteMapNode> que não é único.

-ou-

A SiteMapNode foi encontrado com um valor duplicado para Key.

-ou-

O ResourceKey ou Title foi especificado em um SiteMapNode ou um custom atributo definido para o nó continha uma expressão de recurso explícita.

-ou-

Uma expressão de recurso explícita era aplicada quer ao Title ou Description quer a um custom atributo de a SiteMapNode , mas a informação explícita não era válida.

-ou-

Ocorreu um erro ao analisar o Url de um SiteMapNode.

Um fornecedor nomeado não pode ser encontrado na coleção atual de fornecedores de mapas do sítio.

Uma <siteMapNode> referência a um ficheiro de mapa de sítios contém uma cadeia vazia para o siteMapFilearquivo .

A siteMapFile de um <siteMapNode> usa um caminho físico.

-ou-

Ocorreu um erro ao tentar analisar o caminho virtual para o ficheiro especificado no siteMapFilearquivo .

Exemplos

O exemplo de código seguinte demonstra como criar uma nova instância da XmlSiteMapProvider classe e inicializá-la para construir um mapa de site a partir de 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 utiliza um ficheiro XML localizado na raiz virtual da aplicação ASP.NET. O ficheiro 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>

Observações

O BuildSiteMap método é chamado para carregar e construir o mapa do site a partir de armazenamento persistente.

Para o comportamento padrão quando o ajuste de segurança está ativado, veja "Observações" em IsAccessibleToUser.

Depois de o XmlSiteMapProvider objeto analisar e carregar os dados do mapa do site, todos os objetos e SiteMapNode coleções carregados SiteMapNodeCollection são tornados apenas de leitura. Quando analisa XmlSiteMapProvider a Url propriedade a partir de um ficheiro de mapa de site, converte URLs relativos à aplicação, bem como URLs relativos, em caminhos virtuais absolutos da aplicação.

Subscreve XmlSiteMapProvider notificações de alterações de ficheiros para o ficheiro .sitemap. Se for feita alguma alteração ao ficheiro .sitemap, o XmlSiteMapProvider é recarregado e a estrutura do mapa do site é reconstruída.

Aplica-se a

Ver também