May 2, 2011

Trabalhando com Cookies no C#

Metodo Fácil:

Criando

private void CriarCookie(string texto)
{
HttpCookie cookie = new HttpCookie(“SITE”);

cookie.Values.Add(“IP”, this.Page.Request.UserHostAddress.ToString());
cookie.Values.Add(“USERNAME”, texto);

cookie.Expires = DateTime.Now.AddDays(365);
this.Page.Response.AppendCookie(cookie);
}

Lendo

private HttpCookie ReadCookie()
{
try
{
return this.Page.Request.Cookies["SITE"];
}
catch
{
return null;
}
}

 

A classe HttpCookie possui algumas propriedades avançadas:

Propriedade Descrição
Domain Configura o dominío ao qual pertence este cookie. Se utilizado, ele restringe o acesso ao cookie a servidores do domínio espeficicado, como mycompany.com.
Path 

Configura o caminho ao qual o pertence este cookie. Se utilizado, restringe o acesso ao cookie a páginas localizadas no caminho especificado.
Secure 

Configura a flag que determina se o cookie deve ser transmitido de forma segura para o browser do usuário, utilizando o protocolo HTTPS. Seu servidor web deve ter HTTPS configurado para que esta opção funcione.
HasKeys Informe se o cookie é composto de uma coleção de strings

Advanced Properties of the HttpCookie Class

December 22, 2010

Text Template Transformation Toolkit e ASP.NET MVC

Microsoft Visual Studio inclui um mecanismo de geração de código conhecido como T4 (que é a abreviação de texto modelo transformação Toolkit). Você provavelmente já usou T4 modelos no Visual Studio sem mesmo saber que estavam trabalhando nos bastidores. Este artigo vou para lhe fornecer uma introdução básica ao T4 modelos e mostrar como o ASP.NET MVC usa essa tecnologia. Também mostrarei como personalizar modelos T4 para aprimorar seu trabalho diário com a estrutura MVC.

A idéia básica por trás do modelo de Kit de ferramentas é analisar um arquivo de entrada e transformá-lo em um arquivo de saída. O arquivo de entrada é um modelo — um arquivo de texto com uma extensão de arquivo .tt. O arquivo de saída também conterá o texto e o texto pode ser translation from VPE for Csharp código, Visual Basic código, Web Forms código, marcação ou qualquer outra coisa que você precisa gerar.

A maneira mais fácil de ver T4 em ação é criar um novo projeto no Visual Studio. Eu vai ser Gerando código translation from VPE for Csharp neste artigo, para que você possa usar qualquer tipo de projeto que compila código translation from VPE for Csharp. Quando o projeto é aberto, clique com o botão direito do mouse no projeto e selecione Add | New Item. Selecione o arquivo de texto da caixa de diálogo Add New Item (não há nenhum modelo de item dedicado T4 no Visual Studio 2008, mas haverá em 2010) e nomeie o arquivo Simple.tt (Certifique-se de que você usa a extensão .tt). Assim que o arquivo é carregado para o projeto você imediatamente verá um arquivo Simple.cs aparecem atrás Simple.tt na janela Solution Explorer (consulte 1 Figura ).

Figura 1 translation from VPE for Csharp arquivo atrás de um modelo T4

Simple.tt e Simple.cs será iniciado como arquivos vazios. Se você clique com o botão direito do mouse no arquivo Simple.tt e selecione Propriedades, você verá que o Visual Studio atribuído TextTemplatingFileGenerator como a ferramenta personalizada para o arquivo (consulte do Figura 2). Esse gerador é o mecanismo de T4 transformará o arquivo de modelo em um arquivo de código translation from VPE for Csharp.

Figura 2 Propriedades do modelo T4

Para tornar o modelo de fazer algo interessante, adicione o seguinte código:

<#@ template language="c#v3.5" #>
<#@ assembly name="System.Web.Mvc.DLL" #>
<#@ import namespace="System.Web.Mvc" #>

public class Test
{
<# for(int i = 0; i < 5; i++) { #>
  public int Prop<#= i #> { get; set; }
<# } #>
}

O código começa com algumas diretivas. As diretivas permitem que você especificar a linguagem de programação para o modelo e incluir namespaces e assemblies necessários pelo código no modelo. Quero enfatizar que estou falando de configurações necessárias para executar código no modelo e não o código no projeto propriamente dito. Você também pode usar uma diretiva para especificar a extensão do arquivo de saída. O padrão é translation from VPE for Csharp, mas como mencionei anteriormente, você pode gerar código de Visual Basic, XML, HTML ou qualquer artefato textual.

As diretivas que estou usando informar ao mecanismo do modelo para usar o compilador translation from VPE for Csharp que vem com o Microsoft .NET Framework 3.5. Ela também informa o mecanismo de modelo para fazer referência ao assembly de ASP.NET MVC e para trazer o namespace System.Web.Mvc para o escopo. O MVC assembly e namespace não são realmente exigidos pelo código simples do modelo, mas eu os colocar no modelo como exemplo.

Após as diretivas, o texto que você vê que não é entre < # e # > delimitadores é colocado textual no arquivo de saída. O texto entre < # e # > é translation from VPE for Csharp código. O mecanismo de modelo irá analisar o código e adicioná-lo a uma classe para execução (uma classe, por fim, derivada da classe TextTransformation no conjunto de módulos (assembly) Microsoft.VisualStudio.TextTemplating). Esse processo é semelhante ao processo de mecanismo do modo de exibição do ASP.NET onde o código e marcação em um arquivo .aspx são adicionados a uma classe, por fim, derivada do System.Web.UI.Page. Se você já foi escrevendo suas exibições do MVC usando o mecanismo de exibição de Web Forms, você se sentirá à vontade criando modelos. Em arquivos .aspx, você pode usar código translation from VPE for Csharp para gerar HTML. No meu arquivo .tt, estou usando código translation from VPE for Csharp para gerar código translation from VPE for Csharp.

O código que tenho em Simple.tt produzirá a seguinte saída translation from VPE for Csharp Simple.tt.cs:

public class Test
{
  public int Prop0 { get; set; }
  public int Prop1 { get; set; }
  public int Prop2 { get; set; }
  public int Prop3 { get; set; }
  public int Prop4 { get; set; }
}

Claro, a classe de teste é totalmente inútil e wholly desinteressantes, mas espero que ele lhe dá uma idéia das possibilidades existentes com modelos T4. Porque você estiver escrevendo um código translation from VPE for Csharp no modelo, você pode se conectar a bancos de dados, ler dados do sistema de arquivos, analisar XML ou usar qualquer classe do .NET para conectar-se e ler os metadados que existe em algum lugar no seu ambiente. Esses metadados, como um esquema de banco de dados ou os tipos de outro assembly, são informações que você pode usar para gerar classes. As classes se tornará parte do projeto atual, portanto, eles serão compilados no assembly atual e você pode usá-los em seu aplicativo.

Edição T4
Quando você está editando T4 modelos no Visual Studio, você não terá nenhuma ajuda dos serviços de linguagem no IDE, como o IntelliSense e realce de sintaxe. Há duas soluções para esse problema. Um é o editor Visual T4 disponibilizou Clarius Consulting (de visualt4.com ). Outra solução é o Editor T4 tangíveis da tangíveis Engineering (de t4 editor.tangible-engineering.com ).

Com um entendimento básico de como os modelos T4 funcionam, let’s Observe como o MVC framework usa modelos T4.

T4 no ASP.NET MVC

Você estava usando modelos T4 toda vez que você utilizou o Adicionar modo de exibição ou o controlador adicionar recursos em um projeto ASP.NET MVC. Esses modelos estão localizados na instalação do Visual Studio dentro da pasta de 2\CodeTemplates Common7\IDE\ItemTemplates\CSharp\Web\MVC. Também existem versões do Visual Basic do modelo, mas deixarei isso como um exercício para o leitor para deduzir o nome da pasta.

Os modelos em si fornecem uma excelente educação sobre o valor e os recursos do T4. Por exemplo, aqui está um trecho da List.tt na subpasta AddView da CodeTemplates:

if(!String.IsNullOrEmpty(mvcViewDataTypeGenericString)) {
  Dictionary<string, string> properties =
    new Dictionary<string, string>();
  FilterProperties(mvcHost.ViewDataType, properties);
#>
  <table>
    <tr>
      <th></th>
<#
  foreach(KeyValuePair<string, string> property in properties) {
#>
      <th>
        <#= property.Key #>
      </th>
<#
  }
#>

O trabalho de List.tt é produzir um arquivo .aspx que exibirá uma coleção de objetos do modelo em formato tabular. No modelo você pode ver a tabela, tr e th marcas que estão sendo gravadas. Para produzir o arquivo .aspx o modelo precisa de algumas informações contextuais, como o nome da página mestra deve usar e o tipo de modelo. O modelo pode recuperar essas informações de seu objeto de host. O objeto host fica entre um modelo e o mecanismo T4 e pode dar um modelo de acesso a recursos (como arquivos locais) e das configurações do ambiente. Normalmente, o host é o Visual Studio, mas a equipe de MVC criou um host personalizado do tipo MvcTextTemplateHost no conjunto de módulos (assembly) Microsoft.VisualStudio.Web.Extensions. É esse objeto de host personalizado que carrega consigo informações digitadas nas caixas de diálogo Adicionar controladora e adicionar modo de exibição, que são as coisas mais próximos que você encontrará a assistentes em um projeto do MVC.

List.TT irá executar um loop através da exibição Propriedades do objeto com rigidez de tipos de modelo e criar uma tabela com uma coluna para cada propriedade. O modelo usa a reflexão para descobrir as propriedades disponíveis do modelo em um método FilterProperties. FilterProperties é um método auxiliar posteriormente definido no arquivo de modelo. O modelo também configura os links para navegar até as ações de edição e detalhes e configura as diretivas apropriadas @ Page ou @ Control para .aspx, dependendo se você estiver criando um modo de exibição ou um modo de exibição parcial.

Quando terminar o modelo em execução, você terá um novo .aspx exiba com tudo o que é necessário para exibir uma coleção de objetos do modelo. Provavelmente você ir para o arquivo .aspx e realizar alguns ajustes para o modo de exibição consistente com a aparência dos modos de exibição no restante do seu aplicativo.

Se você achar que está sempre fazendo as mesmas alterações para esses modos de exibição gerados (ou o código de controlador gerado pelo Controller.tt), você pode economizar tempo, modificando os modelos em si. Por exemplo, você poderia modificar os modelos internos para adicionar atributos de classe para regras de estilo que você usar no seu projeto, ou talvez algo ainda mais drásticas. Tenha em mente que modificar os arquivos de modelo no diretório de instalação do Visual Studio irão alterar o código gerado em todos os projetos que você trabalha com em seu computador. Se você desejar alterar o código gerado para um único projeto, você pode fazer isso, muito.

Personalização de T4-projeto

Se você desejar versões personalizadas dos modelos de geração de código em uma base per project, sua primeira etapa é copiar a pasta CodeTemplates da instalação do Visual Studio e colá-lo na raiz do seu projeto ASP.NET MVC. Você Don precisa copiar todos os modelos em seu projeto, no entanto. Você pode copiar apenas os modelos que você deseja modificar. Há um total de seis modelos de geração de código MVC, um para adicionar um controlador (Controller.tt) e cinco para adicionando modos de exibição (List.tt Create.tt, Empty.tt Details.tt, Edit.tt,). Se existir um modelo no seu projeto, ele substituirá o modelo no diretório de instalação do Visual Studio.

Quando você adiciona um arquivo .tt a uma solução do Visual Studio, o IDE atribuirá automaticamente o arquivo .tt uma configuração de ferramenta personalizada de TextTemplatingFileGenerator. Você já viu esse comportamento se você criou o modelo Simple.tt discutido anteriormente. No entanto, isso não é a configuração correta para os modelos de T4 MVC. As ferramentas MVC para o Visual Studio irão chamar esses modelos em momentos apropriados e criar o objeto MvcTextTemplateHost especial durante o processamento do modelo. Assim, após copiar os modelos em seu projeto, a segunda etapa é abrir a janela de propriedades para cada arquivo de modelo e remover a configuração da ferramenta personalizada (deixe em branco configuração). Neste ponto, você estará pronto para personalizar seus modelos.

Propriedades MvcTextTemplateHost
Observe que nem todas as propriedades no objeto MvcTextTemplateHost estão disponíveis para cada contexto. Os modelos executar ao chamar Adicionar modo de exibição e Controller adicionar itens de menu de contexto. A propriedade Namespace está disponível para os dois essas operações e será definida como o valor apropriado. A propriedade de página mestre, no entanto, só é definida como um valor válido durante uma operação Adicionar modo de exibição e irá conter o valor inserido para o nome da página mestre na caixa de diálogo Adicionar modo de exibição pelo usuário.

Como exemplo, let’s que você não quiser que os controladores de uma ação de índice. Você preferir usar uma ação padrão denominada lista. Você pode abrir o modelo Controller.tt na pasta CodeTemplates\AddController e alterar a área adequada do código para a seguinte aparência:

public class <#= mvcHost.ControllerName #> : Controller
{
  // GET: /<#= mvcHost.ControllerRootName #>/

  public ActionResult List()
  {
    return View();
  }
...

Esta é uma alteração simples para fazer, mas ele pode salvar você e sua equipe um pouco de tempo durante a vida útil de um projeto grande.

Um passo adiante — T4MVC

No segundo semestre de 2009, David Ebbo da equipe do ASP.NET criado T4MVC, um modelo T4 projetado para gerar auxiliares com rigidez de tipos em um aplicativo ASP.NET MVC. Ebbo tem refinado o modelo ao longo do tempo e você agora pode baixá-la de aspnet.codeplex.com/wikipage?title=T4mvc.

O modelo T4MVC é um modelo T4 tradicional. Adicione T4MVC.tt e seu arquivo de configurações associadas (T4MVC.settings.t4) a seu projeto e ele usará a ferramenta personalizada TextTemplatingFileGenerator para gerar código translation from VPE for Csharp. T4MVC ajudará você a eliminar muitos dos literais da cadeia de caracteres magic do seu aplicativo MVC. Por exemplo, um dos trabalhos que fará o modelo é verificar as pastas de conteúdo e scripts em seu projeto e gerar classes com propriedades estáticas para representar cada script e parte do conteúdo.

O código gerado significa que você pode processar a exibição de parcial LogOnUserControl fornecida pelo projeto do MVC padrão com este código:

<% Html.RenderPartial(MVC.Shared.Views.LogOnUserControl); %>

Anteriormente você seria tiver usado um literal de cadeia de caracteres:

<% Html.RenderPartial("LogOnUserControl"); %>

Se alguém renomeia, move ou exclui o LogonUserControl, o código com rigidez de tipos produzirá um erro de compilação quando compila o modo de exibição. Juntamente com rigidez acesso a modos de exibição e modos de exibição parciais, o modelo T4MVC também oferece com rigidez de tipos de acesso a todos os arquivos dentro de suas pastas de conteúdo e scripts e com rigidez de tipos acesso a controladores e ações do controlador.

Você pode usar as classes geradas T4MVC durante a criação de links de ação, retornando resultados de modo de exibição e mesmo quando a tabela de roteamento para um aplicativo de criação. Observe que, quando você adiciona pela primeira vez T4MVC para seu projeto, você verá alguns avisos gerados na janela de lista de erros do IDE. Esses avisos são apenas T4MVC informando você sobre alguns altera está sendo aplicada ao seu código. A maioria dessas alterações são nada que altere o comportamento do seu aplicativo; os modelos T4MVC basta adicionar algumas palavras-chave parcial a definições de classes do controlador e também fará com que os métodos de ação não-virtuais virtual.

Mais fácil de manter

T4 é um tesouro maravilhoso dentro do Visual Studio mas ainda não falha. Este artigo fornece tudo o que você precisa para começar a usar modelos personalizados para seu projeto ASP.NET MVC. Felizmente, você pode encontrar alguns usos para modelos T4 outside of seu projeto de aplicativo da Web, muito. Você deve também testar modelos T4MVC em seu projeto, como eles tornam o seu código mais fácil de manter e refatorar. T4 tecnologia no futuro, é ainda melhor no Visual Studio 2010 com a adição de modelos de item dedicado e pre-compiled modelos.

June 8, 2010

try find…

E nasce um novo Search Engine, todo feito em AJAX e disponível em 33 linguas.

a pesquisa é feita através de ajax, evitando o carregamento da página novamente (tempo é precioso), após informar o que deseja pesquisar, pode se alternar entre Web, Imagens, Places, etc…

Bom… eu recomendo o uso http://www.yaanb.com ( Versão Global ) e http://www.yaanb.com.br (Versão em português br)

May 6, 2010

Otimização do mecanismo de pesquisa com o ASP.NET 4.0, o Visual Studio 2010 e o IIS7

Qualquer pessoa com um site público sabe que mecanismos de pesquisa desempenham um papel chave no trazendo os visitantes do site. É importante seja visto pelos mecanismos de pesquisa e classificação altamente nos seus resultados de consulta. Classificações superiores podem trazer os visitantes do mais, que podem levar a mais clientes pague e maior receita de anúncio. Otimização do mecanismo de pesquisa (SEO) é a prática de ajuste fino um site para obter maiores classificações nos resultados da pesquisa. Neste artigo, vamos dar uma olhada SEO práticas que você pode aplicar ao usar as tecnologias da Microsoft mais recentes.

Noções básicas SEO

Há muitos fatores em jogo quando um mecanismo de pesquisa Formula a posição relativa de seu site e alguns dos fatores mais importantes não estão sob seu controle direto. Por exemplo, sabemos que mecanismos de pesquisa estão atentos a links de entrada para seu site. Uma conexão de entrada é um hiperlink em um domínio externo que aponta para o seu domínio. Quando um mecanismo de pesquisa vê muitos links de entrada para um site, ele supõe que o site tem conteúdo interessante ou importante e classifica o site adequadamente. A comunidade SEO descreve esse fenômeno usando termos técnicos como “jiuce link” e “love link.” Quanto mais “jiuce link” possui um site, melhor será a classificação nos resultados da pesquisa.

Se seu site for interessante, em seguida, o resto do mundo naturalmente iniciará adicionar links ao seu site. Como o Visual Studio não vem com um botão “tornar meu site mais interessante”, você finalmente terá que trabalhar muito no fornecimento de conteúdo atrativo para a Web.

Depois de excelente conteúdo no local, você desejará Verifique se os mecanismos de pesquisa podem localizar e processar seu conteúdo. Não sabemos os exatos algoritmos usados pelos mecanismos de pesquisa como Bing.com e Google. No entanto, a maioria dos mecanismos de pesquisa publicou as diretrizes de design e conteúdo que você pode seguir para ajudar a aumentar sua classificação. Comunidade da Internet também compilou uma ampla quantidade de conhecimento adquirido através de experimentos, tentativa e erro.

Aqui é a chave: você deseja pensar como um mecanismo de pesquisa. Mecanismos de pesquisa não executar scripts ou reconhecer as formas as imagens no seu site. Em vez disso, eles metodicamente siga links para analisar, indexar e classificar o conteúdo que localizar no HTML. Quando pensar como um mecanismo de pesquisa, você irá focalizar seu HTML.

HTML válido e rápida

O Visual Studio tem um histórico longo no desenvolvimento WYSIWYG para a área de trabalho e a Web. O Web Forms designer permite que você arrastar e soltar controles de servidor na superfície de design e conjunto de valores para controles na janela Properties. Você pode criar rapidamente uma página da Web sem vejam em HTML. Se você estiver concentrado em HTML, no entanto, você deseja trabalhar na janela de modo de exibição de fonte. A boa notícia é que você pode trabalhar no modo Source sem sacrificar a velocidade ou precisão no Visual Studio 2010.

Visual Studio 2010 será fornecido com um número de trechos de código HTML IntelliSense para criar marcas HTML comuns e controles do lado do servidor usando um número mínimo de pressionamentos de teclas. Por exemplo, quando você estiver no modo de origem de um arquivo .aspx, digite img e pressione a tecla TAB para gerar a marcação mostrada na Figura 1. Apenas quatro pressionamentos de teclas dar a você mais de 20 de caracteres necessários para digite!

Observe como o editor realça os valores de alt e src em Figura 1. Quando você usar trechos de código, você pode guia entre áreas realçadas e comece a digitar para substituir os valores dentro. Esse recurso é outro extra de produtividade que economiza o esforço de navegar para o ponto de inserção correta e excluir manualmente o valor existente.

Projetos ASP.NET Web Forms e ASP.NET MVC terão trechos de código HTML disponíveis no Visual Studio 2010 para criar tudo de ActionLinks para declarações XHTML DOCTYPE. Os trechos estão extensível, personalizável e com base no mesmo mecanismo de trecho de código está disponível desde Visual Studio 2005. Artigo do MSDN de consulte Lorenzo Minore para obter mais detalhes em trechos de código (msdn.microsoft.com/en-us/magazine/cc188694.aspx).


Figura 2 Configurações de validação

Validação

Criar HTML válido é essencial se você desejar mecanismos de pesquisa para indexar seu site. Os navegadores da Web são complacente e tentarão processar uma página com HTML malformado da melhor maneira podem, mas se um mecanismo de pesquisa vê HTML inválido, pode ignorar conteúdo importante ou rejeitar a página inteira.

Como existem diferentes versões das especificações de HTML disponíveis, cada página que entregar do seu aplicativo deve incluir um elemento DOCTYPE. O elemento DOCTYPE especifica a versão do HTML a página está usando. Web navegadores, mecanismos de pesquisa e outras ferramentas examinará o DOCTYPE para que eles saibam como interpretar sua marcação. O Visual Studio colocará um DOCTYPE nos locais apropriados quando você cria novas páginas de formulário da Web e páginas mestras. O padrão DOCTPYE, conforme mostrado no trecho de código a seguir, especifica que a página será estejam em conformidade com a especificação XHTML 1.0:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Embora você não precisar conhecer todas as diferenças sutis entre as especificações de HTML, é preciso saber se sua página em conformidade com um DOCTYPE específico. O Visual Studio tem incluído recursos de validação de HTML desde o lançamento de 2005 e validação está ativada por padrão. Você pode controlar configurações de validação e destino de validação de tipo navegando para as Ferramentas | Opções | Editor de texto | HTML | configurações de validação, conforme mostrado no Figura 2).

“Como avisos”configuração significa problemas de validação de HTML não irão parar sua compilação, mas mostrarão como avisos na janela de erros do Visual Studio. No modo de exibição fonte para formulários da Web, o editor de texto será atenção para erros de validação de HTML usando linhas onduladas. Você pode passa o mouse sobre o elemento para ver a exata mensagem de erro, como nós consulte Figura 3.

HTML descritivo

A marca img em Figura 3 é um bom exemplo de como você precisa pensar como um mecanismo de pesquisa. Como disse anteriormente, um mecanismo de pesquisa não consulte ou interpretar as formas e palavras em uma imagem, mas é possível fornecer o mecanismo de pesquisa algumas informações adicionais sobre o conteúdo gráfico usando o atributo alt. Se a imagem for um logotipo da empresa, o texto alt pode ser “logotipo da empresa”mas seria melhor incluir o nome da empresa no texto alt do logotipo. Um mecanismo de pesquisa usará o texto alt como outra dica em Noções básicas sobre o tema e a essência da página.

Mecanismos de pesquisa estão sempre procurando esses tipos de dicas e para o mecanismo de pesquisa algumas dicas são mais importantes do que outros. Por exemplo, nós normalmente usar cabeçalho marcas, como marcas h1, para fazer determinadas partes de conteúdo standout em uma página. Mecanismos de pesquisa geralmente dará mais peso para uma palavra-chave dentro de uma marca h1 que se a palavra-chave mesma fosse dentro de um parágrafo normal. Você desejará verificar seu conteúdo h1 está descritivo e usa palavras-chave relacionadas para o tema da página. Uma prática recomendada para o trabalho SEO é sempre incluir pelo menos uma marca de H1 em cada página.

Se você olhar a cabeçalhos que escolhi para este artigo novamente, você verá que eles giram em torno frases como “HTML válido”"SEO Noções básicas”e assim por diante. Esses são descritivas todas as frases que dará o leitor e o mecanismo de pesquisa uma boa idéia do que é o artigo sobre.

Títulos descritivos e metadados

Outra área importante para palavras-chave descritivas é dentro da marca head. A seção cabeçalho de uma das páginas do download do código associado é mostrada aqui:

<head runat="server">
<title>Programming meta tags in ASP.NET 4.0</title>
<meta name="keywords" content="ASP.NET, ASP.NET 4.0, SEO, meta" />
<meta name="description" content=
"How to use Page.MetaKeywords and Page.MetaDescription in ASP.NET" />
</head>

As palavras na marca de título de página são muito ponderadas, portanto, você vai querer escolher um título de BOM. A marca principal também pode colocar marcas meta. Você vai querer usar duas marcas meta para SEO trabalho–um para definir palavras-chave associada da página e outro para definir a descrição da página. Os visitantes geralmente não verá essas informações de meta, mas alguns mecanismos de pesquisa exibe a descrição de meta de uma página nos resultados da pesquisa. As palavras-chave meta são outro lugar para anunciar o real significado da sua página por alimentação a pesquisa de palavras importante mecanismo para associar com a página.

Se você estiver criando conteúdo dinâmico, ou alterar os dados de título e meta em uma base freqüente, em seguida, você não deseja rígido código esse conteúdo em um arquivo.aspx. Felizmente, o Web Forms no ASP.NET 4.0 facilita manipular o título, palavras-chave e a descrição de uma página de code-behind:

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Page.Title = "Programming meta tags in ASP.NET 4.0";
Page.MetaKeywords = "ASP.NET 4.0, meta, SEO, keywords";
Page.MetaDescription =
"How to use Page.Keywords and Page.Description in ASP.NET";
}
}
SEO No-Nos

Alguns sites tentarão para os mecanismos de pesquisa da Internet do jogo por preencher as páginas com irrelevantes palavras-chave, muitas palavras-chave, ou por repetidamente palavras-chave duplicação. Esta prática (conhecida como “cartas de palavra-chave”) é uma tentativa de obter uma classificação do mecanismo de pesquisa alta para termos de pesquisa específicos sem fornecer conteúdo útil para os visitantes reais. Os visitantes infeliz que parar em um site são invariavelmente desapontados porque eles não encontrar qualquer conteúdo do conteúdo, mas a visita ainda conta como uma ocorrência quando o site totais sua receita de anúncios.

Mecanismos de pesquisa tentam detectar comportamento enganoso como palavra-chave cartas para proteger a qualidade dos seus resultados da pesquisa. Você não quer um mecanismo de pesquisa para acidentalmente categorizar o site como equivocado porque você já usou muitas palavras-chave em muitos locais. Penalidades de mecanismo de pesquisa podem variar de diminuir a importância relativa de uma página de resultados da pesquisa, para descartar o conteúdo de um site do índice de pesquisa inteiramente.

Outra prática para evitar está servindo um conteúdo diferente para um rastreador de mecanismo de pesquisa que você teria servem para um visitante regular. Alguns sites fará isso por rastreamento o cabeçalho de agente do usuário ou o endereço IP de uma solicitação de entrada. Embora você possa estar consiga pensar em alguns recursos úteis para este tipo de comportamento, muitos sites usou essa técnica para ocultar malware conhecido e conteúdo de phishing de mecanismos de pesquisa. Se um mecanismo de pesquisa detecta esse comportamento (conhecido como cloaking (disfarce)), você vai ser penalizados. Permanecer honesto, fornecer conteúdo boa e não tenta jogo ou manipular os resultados do mecanismo de pesquisa.

Você pode ver como usar propriedades de título, MetaKeywords e MetaDescription da página durante o evento Page_Load. A propriedade Title foi no ASP.NET desde a versão 2.0, mas MetaKeywords e MetaDescription são novos no ASP.NET 4.0. Embora ainda estamos usando seqüências de caracteres embutida, você pode carregar esses valores de propriedade de qualquer fonte de dados. Você, em seguida, pode permitir a pessoa encarregada do site para ajustar os metadados para os melhores resultados de mecanismo de pesquisa de marketing e eles não precisará editar o código-fonte para a página.

Embora descrições e palavras-chave eficaz podem dar você um pouco de uma borda nos resultados do mecanismo de pesquisa, conteúdos é Rei ainda. Nós irá retornar para ver mais dicas HTML mais adiante neste artigo, mas as próximas seções veremos como URLs podem desempenham um papel importante em como o conteúdo está localizado e classificado.

URLs canônicos

Conteúdo duplicado geralmente apresenta um problema para mecanismos de pesquisa. Por exemplo, digamos que o mecanismo de pesquisa vê uma receita para seus famosas pizz@s em duas diferentes URLs. A URL que deve o mecanismo de pesquisa preferir e fornecer um link nos resultados da pesquisa? Conteúdo duplicado é ainda mais de um problema de otimização quando se trata de links de entrada. Se “link amor”para o taco receita é distribuída entre dois diferentes URLs, sua receita taco famoso talvez não tenha a classificação do mecanismo de pesquisa que ele merece.

Infelizmente, você pode ser duplicar conteúdo sem perceber. Se os mecanismos de pesquisa podem ler seu site de uma URL com um prefixo de www e sem um prefixo www, eles verá os mesmos conteúdos em duas diferentes URLs. Desejar ambos os URLs de trabalho, mas você deseja que apenas um URL a ser a URL padrão ou canônica.

Como exemplo, considere o site Microsoft.com. Www.microsoft.com e microsoft.com levará você para o mesmo conteúdo. Mas, observe atentamente se você for para a home page usando microsoft.com. O site Microsoft redirecionará o navegador para www.microsoft.com. A Microsoft usa redirecionamento para impor www.microsoft.com como seu URL canônica.

Felizmente, redirecionar os visitantes do seu URL canônica é fácil com o ASP.NET. Tudo o que você precisa fazer é fornecer alguma lógica durante o evento BeginRequest do pipeline aplicativo. Você pode fazer isso implementando um módulo HTTP personalizado, ou usando um método Application_BeginRequest em global.asax. Figura 4 é a aparência a lógica para este recurso.

O código no Figura 4 está usando outro recurso novo no ASP.NET 4.0–o método RedirectPermanent do objeto HttpResponse. O método tradicional de redirecionamento no ASP.NET enviará um código de status HTTP de 302 de volta para o cliente. Um 302 informa o cliente que o recurso temporariamente movido para um novo URL e o cliente deve ir para a nova URL, apenas isso vez, para localizar o recurso. O método RedirectPermanent envia um código 301 para o cliente. O 301 informa o cliente que o recurso movido permanentemente, e ele deve procurar o recurso na nova URL para todas as solicitações futuras. Observe a chamada para RedirectPermanent também usa um novo recurso no translation from VPE for Csharp 4.0–a sintaxe de parâmetro nomeado. Embora essa sintaxe não é necessária para a chamada do método, a sintaxe de parâmetro nomeado faz a intenção do parâmetro explícito.

Com um redirecionamento no lugar, navegadores da Web e mecanismos de pesquisa devem ser usando apenas seu URL canônica. O “amor de link”serão consolidados e classificações de mecanismo de pesquisa devem melhorar.

URLs descritivos

Figura 4 RedirectPermanent método do objeto HttpResponse

void Application_BeginRequest(object sender, EventArgs e)
{
HttpApplication app = sender as HttpApplication;
if (app != null)
{
string domain = "www.odetocode.com";
string host = app.Request.Url.Host.ToLower();
string path = app.Request.Url.PathAndQuery;
if (!String.Equals(host, domain))
{
Uri newURL = new Uri(app.Request.Url.Scheme +
"://" + domain + path);
app.Context.Response.RedirectPermanent(
newURL.ToString(), endResponse: true);
}
}
}

Na edição de janeiro de 2009 da MSDN Magazine escrevi sobre como usar os recursos de roteamento do .NET 3.5 SP1 com Web Forms do ASP.NET (msdn.microsoft.com/en-us/magazine/2009.01.extremeaspnet.aspx). Como disse, as URLs limpas e descritivas, você pode obter com roteamento são importante para ambos os usuários e os mecanismos de pesquisa. Ambos encontrará significando mais em uma URL como /recipes/tacos que serão no /recipe.aspx?category=40&topic=32. No primeiro, o mecanismo de pesquisa irá considerar “receitas”e “pizz@s”como palavras-chave importantes para o recurso. O problema com a URL último é que muitos rastreadores de mecanismo de pesquisa não funcionam bem quando uma URL requer uma seqüência de consulta com vários parâmetros, e os números na seqüência de consulta são sem sentido fora do banco de dados de back-end do aplicativo.

A equipe do ASP.NET adicionou algumas classes adicionais para a versão 4.0 que tornam o roteamento com Web Forms fácil. No download do código para este artigo, eu já re-implemented demonstração site do janeiro com as novas classes no ASP.NET 4.0. Roteamento começa descrevendo as rotas que seu aplicativo processará durante o evento Application_Start. O código a seguir é um método RegisterRoutes que invoca o site durante o evento Application_Start em global.asax:

void RegisterRoutes()
{
RouteTable.Routes.Add(
"Recipe",
new Route("recipe/{name}",
new PageRouteHandler("~/RoutedForms/RecipeDisplay.aspx",
checkPhysicalUrlAccess:false)));
}
Regravação de URL por Carlos Aguilar Mares

Regravação de URL para o IIS 7.0 é uma ferramenta que a Microsoft disponibiliza para download a partir do iis. NET/extensões/URLRewrite. Essa ferramenta pode executar todo o trabalho de canonização URL para você sem necessitar nenhum código. A ferramenta fará hospedar normalização de cabeçalho, acordo e muito mais (conforme descrito nesta postagem de blog: ruslany.net/2009/04/10-url-rewriting-tips-and-tricks/). A ferramenta também pode ajudar você “corrigir”quebrado links por reconfiguração ou redirecionando o usando um mapa, portanto, você não precisará até mesmo alterar seu aplicativo/HTML. Consulte: blogs.msdn.com/carlosag/archive/2008/09/02/IIS7UrlRewriteSEO.aspx

A regravação de URL também pode fazer o “descritivo”URLs para qualquer versão do ASP.NET e seu desempenho é muito superior a qualquer outra existente opção, incluindo ASP.NET roteamento, porque a ferramenta funciona com o cache do modo kernel.

Figura 5 Obter nome do parâmetro de RouteData para exibir informações sobre um receitas

private void DisplayRecipe()
{
var recipeName = RouteData.Values["name"] as string;
if (recipeName != null)
{
var recipe = new RecipeRepository().GetRecipe(recipeName);
if (recipe != null)
{
_name.Text = recipe.Name;
_ingredients.Text = recipe.Ingredients;
_instructions.Text = recipe.Instructions;
}
}
}

Se você examinar meu artigo de janeiro, você irá se lembrar de como cada rota deve especificar um manipulador de rotas. RegisterRoutes, está configurando o manipulador para “Receitas”Rotear para uma instância da classe PageRouteHandler nova no ASP.NET 4.0. O mecanismo de roteamento irá direcionar qualquer entrada solicitam URLs na forma de receita / {nome} para este manipulador de rotas, onde {name} representa um parâmetro de rota o roteamento do motor extrairá da URL.

Um formulário da Web tem acesso a todos os parâmetros rota que extrai o mecanismo de roteamento de URL, por meio de uma propriedade RouteData. Esta propriedade é nova para a classe Page no 4.0. O código no Figura 5 irá obter o parâmetro de nome de RouteData e usar o nome para pesquisar e exibir informações sobre uma receita:

Um dos excelentes recursos do mecanismo de roteamento é sua natureza bidirecional. Não apenas o mecanismo de roteamento é possível analisar URLs determinam as solicitações HTTP, mas ele também pode gerar URLs para acessar páginas específicas. Por exemplo, se você desejar criar um link que levará um visitante a receita para pizz@s, você pode usar o mecanismo de roteamento para gerar uma URL com base na configuração de roteamento (em vez de embutir em código o URL). ASP.NET 4.0 introduz um novo construtor de expressões você pode usar em sua marcação para gerar URLs da tabela de configuração de roteamento:

<asp:HyperLink NavigateUrl="<%$ RouteUrl:RouteName=recipe,name=tacos %>"
Text="Titillating Tacos" runat="server">
</asp:HyperLink>

O código anterior mostra o novo construtor de expressões RouteUrl em ação. Esse construtor de expressões irá informar o mecanismo de roteamento para gerar um link para a rota denominada “receita”e incluir um parâmetro de nome na URL com o valor “pizz@s”. A marcação anterior irá gerar HTML a seguir:

<a href="/recipe/tacos">Titillating Tacos</a>

A URL anterior é otimizado para um mecanismo de pesquisa, amigável e descritivo. No entanto, este exemplo exibe um problema maior com o ASP.NET. Controles de servidor para formulários da Web geralmente abstraem o HTML que produzem e nem todos os controles de servidor no ASP.NET são o mecanismo de pesquisa amigável. É hora de que retornamos para falar sobre HTML novamente.

Erros HTML

Se é criado um link para a receita de taco usando um LinkButton em vez de um hiperlink, foi seria localizar nós com marcação diferente no navegador. O código para o LinkButton e o HTML que ele gera é mostrado aqui:

<asp:LinkButton runat="server" Text="Tacos"
PostBackUrl="<%$ RouteUrl:RouteName=recipe,name=tacos %>">
</asp:LinkButton>
<!-- generates the following (excerpted): -->
<a href="javascript:WebForm_DoPostBackWithOptions(...)">Tacos</a>

Ainda temos uma marca de âncora para o usuário clique no, mas a marca de âncora usa JavaScript para forçar o navegador para postback para o servidor. No botão LinkButton processa a isso HTML para disparar um evento de clique do lado do servidor quando o usuário clica no link. Infelizmente, mecanismos de pesquisa e navegação de postback de JavaScript não funcionam juntos. O link é efetivamente invisível para mecanismos de pesquisa, e eles nunca podem encontrar a página de destino.


Figura 6 IIS 7 Gerenciador

Como o lado do servidor ASP.NET controla abstrata HTML ausente, você terá que escolher os controles de servidor com sabedoria. Se você quiser controle completo sobre marcação HTML em um ambiente do ASP.NET, você deve considerar usando a estrutura MVC do ASP.NET. Controles de servidor são verboten ao usar a estrutura MVC, e a infra-estrutura e as APIs de local para trabalhar com somente marcação HTML.

Se você estiver usando o Web Forms do ASP.NET e otimizar para mecanismos de pesquisa, você desejará exibir código fonte HTML produzido por controles de servidor. Cada navegador da Web dará a você essa opção. No Internet Explorer, use o modo de exibição – >Comando de origem. Tenha cuidado com qualquer controle que processa uma combinação de HTML e JavaScript em cenários de navegação. Por exemplo, com ao AutoPostBack de DropDownList propriedade definida como true irá exigir JavaScript trabalhar. Se você depende do postback automático para navegar até novo conteúdo, você vai estar fazendo o conteúdo invisível para mecanismos de pesquisa.

Obviamente, aplicativos AJAX pesado podem apresentar um problema para mecanismos de pesquisa. O controle UpdatePanel e o conteúdo gerado por chamadas de serviço da Web de JavaScript não são amigáveis aos mecanismos de pesquisa. A abordagem mais segura para o trabalho SEO é colocar o conteúdo diretamente em seu HTML para torná-lo facilmente identificável.

Após você ter ajustado seu HTML, as palavras-chave e seus URLs, como medir os resultados? Embora sua classificação do mecanismo de pesquisa é o indicado final avaliar seu esforço SEO, seria bom se você pode encontrar problemas antes de um site vai ao vivo e um mecanismo de pesquisa rastreia suas páginas. Embora o Visual Studio pode informar sobre problemas de validação de HTML, ele não avisar você sobre falta de metadados e URLs canônicos. Esse é o trabalho de um novo produto–IIS SEO Toolkit.


Figura 7 Relatório resumo

O Toolkit SEO IIS

O IIS SEO Toolkit é um download gratuito para IIS 7 e disponível a partir de iis.net/extensions/SEOToolkit. O Toolkit inclui um mecanismo de rastreamento que será indexar seu aplicativo da Web local como um mecanismo de pesquisa e fornecer-lhe um relatório de análise detalhada do site. O Toolkit também pode gerenciar arquivos robots.txt e mapa de site. O arquivo de robôs usa um formato padronizado para informar os mecanismos de pesquisa que excluir da indexação, enquanto arquivos sitemap podem apontar os mecanismos de pesquisa para conteúdo que você deseja incluir. Você também pode usar arquivos de mapa de site para informar o mecanismo de pesquisa a prioridade, taxa de alteração e a data de um recurso alterado.

Para trabalho SEO, o relatório de análise de site é inestimável. O relatório dirá a você tudo sobre o seu site da perspectiva de um mecanismo de pesquisa. Depois de instalar o Toolkit, uma opção de análise de site será exibido para seus sites na janela Gerenciador de IIS 7, conforme mostrado no Figura 6.

Duas vezes no ícone levará você para uma lista de relatórios anteriormente execução, com uma opção de ação de executar uma nova análise. Executar uma análise é tão fácil como apontando a ferramenta para uma URL HTTP local e clicar em OK. Quando a análise for concluída, o Toolkit será aberto um relatório de resumo, como mostra a Figura 7.

O Toolkit se aplica a um número de regras e heurística conscientizá-lo dos problemas relacionados a SEO e desempenho. Você pode encontrar links desfeitos, faltando títulos, descrições são muito curtas, descrições são muito longos e um host de outros possíveis problemas. O Toolkit será analisar links e fornecer relatórios sobre as páginas mais vinculadas e os caminhos de que um visitante precisará seguir para acessar uma página específica. O Toolkit fornece até mesmo uma análise textual de conteúdo do cada página. Você pode usar essa análise para localizar as melhores palavras-chave para uma página.

O IIS SEO Toolkit permite que você descubra o trabalho SEO que você precisa executar e validar qualquer trabalho SEO que você já concluiu. No momento da escrita, o Toolkit está em uma versão beta 1. Você pode esperar que as futuras versões continuará a adicionar regras e recursos de análise, além de alguns inteligência pode corrigir automaticamente problemas específicos para você.

Fácil e efetiva

Mesmo se você tiver o maior conteúdo no mundo, você precisará tornar o conteúdo localizável para mecanismos de pesquisa para levam você aos visitantes. SEO é a prática de pensar como um mecanismo de pesquisa e fazer seu apelo de site dos rastreadores e algoritmos de classificação. Novos recursos para tornar mais fácil trabalhar no .NET 4.0, enquanto o IIS SEO Toolkit é uma ferramenta fantástica dedicada a tornar seu site melhor para mecanismos de pesquisa SEO apresentando o Visual Studio 2010 e ASP.NET 4.0. Usando as três ferramentas em combinação pode tornar seu trabalho SEO fácil e eficiente.

Baixar o código de exemplo

Fonte: Microsoft MSDN – Scot Allen

April 28, 2010

Web.config no Asp.Net 4.0

Se pararmos para comparar o arquivo Web.config desde a versão 1.1 do ASP.NET, hoje temos um arquivo imenso, extremamente crítico, com várias novas configurações como AJAX, roteamento e interação com IIS 7, etc . No .NET Framework 4, as configurações importantes foram movidas para o arquivo Machine.config e as aplicações WEB agora herdam estas definições deste arquivo. Isso permite que o arquivo Web.config no ASP.NET 4 pode estar vazio ou apenas conter as linhas que definem para qual versão do framework a aplicação foi dessenvolvida.

<?xml version="1.0"?>
<configuration>
     <system.web>
          <compilation debug="true" targetFramework="4.0" />
     </system.web>
</configuration>