Ler em inglês

Compartilhar via


Leiame do Web Matrix e de Páginas da Web do ASP.NET (Razor) versão beta 3

Leiame do Web Matrix e de Páginas da Web do ASP.NET (Razor) versão beta 3

9 de novembro de 2010

Contents

Visão geral

O Microsoft WebMatrix Beta é uma pilha de desenvolvimento web gratuita que é instalada em minutos. Ele integra um servidor web com banco de dados e estruturas de programação para criar uma experiência única e integrada. Você pode usar o WebMatrix Beta para simplificar a maneira como codifica, testa e publica seu próprio site ASP.NET ou PHP, ou pode usar o WebMatrix Beta para iniciar um novo site usando aplicativos populares de software livre, como DotNetNuke, Umbraco, WordPress ou Joomla. O WebMatrix Beta usa o mesmo servidor Web poderoso, mecanismo de banco de dados e ambiente de estruturas que executará seu site na Internet, o que torna a transição do desenvolvimento para a produção suave e contínua.

Instalação

Observação

O WebMatrix não é mais recomendado como um ambiente de desenvolvimento integrado para ASP.NET páginas da Web. Use o Visual Studio ou o Visual Studio Code.

Se você tiver problemas durante a instalação, consulte Solução de problemas com o Microsoft Web Platform Installer.

Instruções para publicação de aplicativos

Consulte instruções passo a passo para publicar aplicativos

Novos recursos, alterações e problemas conhecidos

Instalação do WebMatrix Beta 3

Problema: o WebMatrix Beta 3 só está disponível em plataformas compatíveis com o Microsoft .NET Framework 4

O .NET Framework versão 4 é necessário para o WebMatrix Beta. Em determinados casos, o instalador do WebMatrix Beta permitirá que você tente instalar em uma plataforma que não faz parte do conjunto de configurações com suporte. Em particular, o Windows Vista sem a atualização do SP1 permitirá que você inicie a instalação do WebMatrix Beta, mas o componente .NET Framework 4 falhará e bloqueará sua instalação.

Solução alternativa
Instale em uma plataforma compatível, que inclui:

  • Windows 7
  • Windows Server 2008
  • Windows Server 2008 R2
  • Windows Vista SP1 ou posterior
  • Windows XP SP3
  • Windows Server 2003 SP2

Problema: não é possível instalar o WebMatrix Beta 3 se o Microsoft Visual Studio 2008 estiver instalado sem o Microsoft Visual Studio 2008 SP1

Solução alternativa
Instale o Microsoft Visual Studio 2008 Service Pack 1 a partir do Centro de Download da Microsoft.

Problema: alguns assemblies do SQL Server Compact 4.0 não estão instalados no GAC

Os assemblies gerenciados do SQL Server Compact 4.0 não são colocados no GAC (cache de assembly global) quando você instala o SQL Server Compact 4.0 em um computador de 64 bits e o computador tem apenas o Perfil de Cliente do .NET Framework 3.5 SP1 instalado. Os assemblies gerenciados que não estão instalados no GAC são:

  • System.Data.SqlServerCe.dll (provedor ADO.NET)
  • System.Data.SqlServerCe.Entity.dll (ADO.NET Entity Framework )

Solução alternativa
Desinstale o SQL Server Compact 4.0. Baixe e instale a versão completa do .NET Framework 3.5 SP1 no seguinte local:

Microsoft .NET Framework 3.5 Service pack 1 (pacote completo)

Em seguida, reinstale o SQL Server Compact 4.0.

Problema: não é possível desinstalar o SQL Server Compact usando a linha de comando

A desinstalação do SQL Server Compact usando opções de linha de comando não funciona nesta versão.

Solução alternativa
Use Programas e Recursos no Painel de Controle do Windows para desinstalar o Microsoft SQL Server Compact 4.0.

Páginas da Web do ASP.NET

Esta seção do documento descreve novos recursos, alterações e problemas conhecidos com a versão Beta 3 de ASP.NET Páginas da Web com sintaxe Razor.

Novos recursos na versão Beta 3 para páginas da Web ASP.NET com sintaxe Razor

Novo: o método "Html.Raw" renderiza a marcação não codificada

O novo Html.Raw método permite renderizar a marcação HTML como marcação em vez de renderizar a saída codificada. (Por padrão, ASP.NET Razor codifica cadeias de caracteres antes de renderizá-las.) A sintaxe é:

Html.Raw(value)

O exemplo a seguir mostra como usar Html.Raw:

@* Inserts literal markup into the page as specified in the value string. *@
@Html.Raw("<div>Hello <em>world</em>!</div>")

Alterações na versão Beta 3 para páginas da Web ASP.NET com sintaxe Razor

Alteração: método "HrefAttribute" removido

O HrefAttribute método da WebPage classe foi removido. Esse auxiliar foi usado para codificar caracteres não seguros em URLs. Ele não é mais necessário porque ASP.NET Razor codifica automaticamente cadeias de caracteres. (Use o novo Html.Raw método para renderizar cadeias de caracteres não codificadas.)

Alteração: sintaxe para auxiliares declarativos "@helper" alterada

Na versão Beta 3, ASP.NET altera a forma como analisa os auxiliares criados usando a @helper sintaxe. Em essência, a @helper sintaxe agora é analisada como um bloco de código em vez de um bloco de marcação que pode incluir código. Portanto, o código dentro do auxiliar não precisa ser colocado em @{ } blocos. Por outro lado, a marcação dentro do auxiliar deve ser explicitamente incluída em elementos HTML ou em marcas ASP.NET Razor <text></text> .

Por exemplo, a seguinte @helper sintaxe funciona na versão Beta 3:

@helper ThumbnailLink(string imagePath, int width, int height) {
    @{
        string newFileName = "";
        WebImage thumbnail = new WebImage(imagePath);
        if(thumbnail != null){
           thumbnail.Resize(width, height, true, true);
           newFileName = @"~\thumb_" + Path.GetFileName(thumbnail.FileName);
           thumbnail.Save(newFileName);   
        }
    }
    <a href="@Href(imagePath)"><img src="@Href(newFileName)" /></a>
}

Na versão Beta 3, esse auxiliar deve ser alterado para se parecer com o exemplo a seguir:

@helper ThumbnailLink(string imagePath, int width, int height) {
    string newFileName = "";
    WebImage thumbnail = new WebImage(imagePath);
    if(thumbnail != null){
       thumbnail.Resize(width, height, true, true);
       newFileName = @"~\thumb_" + Path.GetFileName(thumbnail.FileName);
       thumbnail.Save(newFileName);   
    }
    <a href="@Href(imagePath)"><img src="@Href(newFileName)" /></a>
}

Observe que os @{ } caracteres ao redor do código inicial no auxiliar não são mais usados. Isso ocorre porque o conteúdo dos auxiliares é tratado como um bloco de código por padrão. O auxiliar renderiza a marcação, que começa com a tag de abertura <a> . Se o auxiliar precisar renderizar texto sem formatação ou tags que não incluam uma tag de fechamento (por exemplo, <meta> tags), o conteúdo a ser renderizado deverá estar em <text></text> tags.

Alteração: "WebPageContext.HttpContext" removido

A propriedade WebPageContext.HttpContext foi removida. Use o HttpContext.Current em vez disso. (A WebPageContext.HttpContext propriedade simplesmente embrulhou isso.)

Mudança: ajudante do "Facebook" movido para o novo pacote

O Facebook auxiliar foi movido para a biblioteca Facebook.Helper , que inclui o auxiliar e a Facebook funcionalidade adicional. Você deve instalar essa biblioteca como um pacote separado, conforme descrito em "Instalando auxiliares com o Gerenciador de pacotes" no tutorial Introdução ao ASP.NET Pages.

Alterar: os tipos de associação, função e segurança são movidos para o novo assembly

Os seguintes tipos foram movidos para o WebMatrix.WebData assembly:

  • ExtendedMembershipProvider
  • SimpleMembershipProvider
  • SimpleRoleProvider
  • WebSecurity

Alteração: a classe "TagBuilder" foi movida para System.Web.WebPages.dll assembly

A TagBuilder classe foi transferida para a assembleia System.Web.WebPages.dll. Anteriormente, isso estava em um assembly que fazia parte de ASP.NET MVC. Essa alteração significa que você não precisa instalar ASP.NET MVC para usar a TagBuilder classe.

No entanto, a classe ainda está no System.Web.Mvc namespace. Para usar a TagBuilder classe (por exemplo, em um auxiliar Razor de ASP.NET personalizado), você deve fazer referência ao namespace (por exemplo, adicionando @using System.Web.Mvc ao seu código).

Alteração: Sintaxe de validação de solicitação alterada; Classe "Validation" removida

Na versão Beta 3, para desabilitar a validação de um campo individual ou conjunto de campos, você pode chamar o Validation.Exclude método, passando o nome ou nomes dos campos a serem excluídos da validação. Uma nova sintaxe está disponível na versão Beta 3 para ignorar a validação. O Validation método usado no Beta 3 foi removido.

Observação

Se você não desabilitar a validação de solicitação, se os usuários tentarem carregar a marcação HTML (por exemplo, usando um editor de rich text em uma página), o site relatará um erro como Um valor Request.Form potencialmente perigoso foi detectado no cliente e a entrada do usuário não será aceita. Se você desabilitar a validação de solicitação, deverá verificar manualmente a entrada do usuário para garantir que ela não contenha marcação ou script potencialmente perigoso impedindo o XSS (Cross-Site Scripting) no ASP.NET Core.

Para desabilitar a validação automática de solicitação, chame o Request.Unvalidated método, passando o nome do campo ou outro objeto post para o qual você deseja ignorar a validação da solicitação. Você pode usar esse método para ignorar a Formvalidação de qualquer item nas coleções , QueryString, Cookies, e ServerVariables . Os exemplos a seguir mostram como usar o Unvalidated método:

Request["userInput"]; // Validated 
Request.Unvalidated("userInput"); // Validation bypassed
Request.Unvalidated().Form["userInput"]; // Validation bypassed

Request.QueryString["userPreference"]; // Validated 
Request.Unvalidated().QueryString["userPreference"]; // Validation bypassed

Problemas conhecidos para ASP.NET páginas da Web com sintaxe Razor

Problema: comportamento inesperado ao usar uma tabela de usuário personalizada para associação

Para inicializar o provedor de associação para um site do ASP.NET Razor, chame o WebSecurity.InitializeDatabaseConnection método. (No WebMatrix, o modelo Site Inicial inclui uma chamada para esse método no arquivo _AppStart.cshtml .) Se o autoCreateTables parâmetro desse método for definido como true (por padrão, ele é definido como true no modelo Site Inicial) e se um nome de tabela não reconhecido for passado para o método (o segundo parâmetro), o método não gerará um erro. Em vez disso, ele cria automaticamente a tabela.

Isso pode ser um problema se você pretende usar uma tabela de usuário personalizada para associação, mas passa o nome de tabela errado para o WebSecurity.InitializeDatabaseConnection método. Como o método não gera, por padrão, um erro se a tabela especificada não existir e, em vez disso, cria uma nova tabela, o aplicativo pode parecer estar funcionando. No entanto, o código do aplicativo que depende de sua tabela de usuário personalizada (e de campos nela) pode eventualmente falhar com erros inesperados.

Solução alternativa
Verifique se o nome passado no InitializeDatabaseConnection método corresponde à tabela de perfil de usuário no banco de dados de associação ou se o autoCreateTables parâmetro está definido como false.

Problema: erro "Falha ao gerar uma instância de usuário do SQL Server"

Se um aplicativo Web WebMatrix usar o SQL Server Express e estiver executando o IIS 7.5 no Windows 7 ou Windows Server 2008 R2, você poderá ver um erro que indica que o SQL Server não pode recuperar o caminho do aplicativo local do usuário em tempo de execução.

Solução alternativa Certifique-se de que a conta do Windows na qual o aplicativo é executado (normalmente SERVIÇO DE REDE) tenha permissões de leitura/gravação para pastas raiz do aplicativo e para subpastas como App_Data. Informações mais detalhadas estão disponíveis em Problemas com a instanciação de usuário do SQL Server Express e ASP.net projetos de aplicativo Web.

Problema: no Visual Studio, os namespaces para assemblies personalizados (DLLs) não são importados automaticamente

Se você usar assemblies personalizados em um projeto no Visual Studio, os namespaces declarados nesses assemblies não serão importados automaticamente em tempo de design. Como resultado, as referências a tipos personalizados podem não ser reconhecidas em tempo de design e são marcadas como não reconhecidas no Visual Studio (usando um "rabisco"). Esse problema ocorre somente em tempo de design no Visual Studio; O aplicativo em si é executado corretamente.

Solução alternativa
Inclua uma using instrução (imports no Visual Basic) que faça referência às entidades que não são reconhecidas em tempo de design.

Problema: o Visual Studio IntelliSense e os modelos de projeto estão disponíveis somente no MVC versão 3 ASP.NET

A instalação de ASP.NET Páginas da Web também não instala ferramentas para o Visual Studio, como o IntelliSense, e modelos de projeto para aplicativos de Páginas da Web ASP.NET.

Solução alternativa Para usar o IntelliSense e modelos de projeto para aplicativos de Páginas da Web ASP.NET no Visual Studio, instale ASP.NET MVC 3 RC por meio do Instalador de Plataforma Web ou do instalador autônomo.

Problema: erro "<a classe auxiliar> não pode ser encontrada"

Depois de atualizar para o Beta 3, você pode ver um erro informando que uma classe auxiliar (por exemplo, a Facebook classe) não pode ser encontrada. A partir da versão Beta 2 e continuando na versão Beta 3, os auxiliares foram movidos para pacotes que você deve instalar explicitamente. Os sites existentes não são atualizados para incluir esses pacotes; isso inclui sites nas pastas \Meus Documentos\IISExpress ou \Meus Documentos\Meus Sites . Em particular, você verá esse erro se usar o site padrão em Meus Sites (WebSite1), que inclui uma referência ao Twitter auxiliar.

Solução alternativa
Comente as chamadas para todos os auxiliares no site, execute a página _Admin e instale o pacote ou pacotes que incluem os auxiliares que você deseja usar. Depois de instalar o pacote, você pode remover o comentário das linhas que fazem referência a auxiliares.

Problema: a implantação de assemblies Beta 3 ASP.NET Razor na pasta Bin pode não funcionar em sites de hospedagem

Se você implantar um site de Páginas da Web do ASP.NET em um site de hospedagem e implantar os assemblies ASP.NET Razor Beta 3 na pasta Bin do site, poderá ocorrer erros, incluindo o seguinte:

Could not load type 'Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility' from assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

Isso pode acontecer se o provedor de hospedagem tiver instalado os assemblies ASP.NET Páginas da Web Beta 1 no GAC (cache de aplicativo global) do servidor. Os assemblies no GAC têm precedência sobre os assemblies instalados localmente na pasta Bin .

Solução alternativa Entre em contato com seu provedor de hospedagem para confirmar se os erros que você está vendo são devidos a um conflito entre as versões do provedor dos assemblies e a sua. Em caso afirmativo, solicite que o provedor de hospedagem atualize os assemblies no GAC do servidor.

Problema: leitura de feeds ou outros dados externos por meio de um servidor proxy

Se o servidor que executa o site estiver atrás de um servidor proxy, talvez seja necessário configurar as informações de proxy no arquivo Web.config para poder ler as informações que vêm de fora do site. Por exemplo, se você usar o ReCaptcha auxiliar, o auxiliar se comunicará com o serviço reCAPTCHA, mas poderá ser bloqueado pelo servidor proxy. Da mesma forma, os feeds usados em páginas da Web ASP.NET, como o feed usado pelo gerenciador de pacotes, podem exigir configuração de proxy.

Se você tiver problemas ao trabalhar com um serviço externo ou com o feed de pacotes, coloque os seguintes elementos no arquivo Web.config raiz do aplicativo:

<system.net>
  <defaultProxy>
    <proxy autoDetect="False" 
       proxyaddress="[proxy URL]"/>
  </defaultProxy>
</system.net>

Para obter mais informações sobre como configurar um servidor proxy, consulte <Elemento proxy> (configurações de rede) no site do MSDN.

Problema: erro "Microsoft.Web.Infrastructure.dll não pode ser carregado"

Se você instalou anteriormente a versão Beta 1 de ASP.NET Páginas da Web com sintaxe Razor e, em seguida, instalou a versão Beta 3, todos os assemblies apropriados serão instalados no GAC, exceto Microsoft.Web.Infrastructure.dll. Como consequência, ao executar ASP.NET páginas Razor, você vê um erro que indica que Microsoft.Web.Infrastructure.dll não pôde ser carregado.

Esse problema não ocorre se você carregou a versão Beta 3 em um computador limpo.

Solução alternativa
No Painel de Controle, desinstale ASP.NET Páginas da Web. Em seguida, reinstale a versão Beta 3.

Problema: a desinstalação do .NET Framework versão 4 desabilita ASP.NET páginas da Web com sintaxe Razor

Se você desinstalar o .NET Framework versão 4 e reinstalá-lo, ASP.NET Páginas da Web com sintaxe Razor será desabilitada. As páginas com a extensão .cshtml não são executadas corretamente. ASP.NET Páginas da Web registra um assembly no arquivo Web.config raiz do computador e a remoção do .NET Framework remove esse arquivo. A reinstalação do .NET Framework instala uma nova versão do arquivo de configuração, mas não adiciona a referência para o assembly de Páginas da Web ASP.NET.

Solução alternativa Depois de reinstalar o .NET Framework, reinstale ASP.NET páginas da Web com a sintaxe Razor. Isso adiciona o seguinte elemento ao arquivo Web.config na raiz do computador, que normalmente está no seguinte local:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config (32-bit)

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config (64-bit)

<compilation>
  <assemblies>
    <add assembly="Microsoft.WebPages.Configuration, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

    <-- Additional assemblies here. -->

  </assemblies>
</compilation>

Problema: os aplicativos implantados anteriormente com assemblies ASP.NET na pasta Bin apresentam erros

Durante a implantação, as cópias dos assemblies de Páginas da Web ASP.NET (por exemplo, Microsoft.WebPages.dll) para a pasta Bin do site no servidor. (Isso pode ter acontecido automaticamente durante a implantação ou porque o desenvolvedor copiou explicitamente os assemblies.) No entanto, quando a versão Beta 3 é instalada, ocorrem erros, como erros de que determinados tipos não podem ser encontrados. Isso ocorre porque vários tipos de páginas da Web ASP.NET foram movidos para namespaces diferentes para a versão Beta 3.

Solução alternativa
Limpe a pasta Bin do aplicativo implantado, copie os novos assemblies para a pasta (ou reimplante o aplicativo) e reinicie o aplicativo.

Problema: as URLs sem extensão não localizam arquivos .cshtml/.vbhtml no IIS 7 ou no IIS 7.5

No IIS 7 ou IIS 7.5, as solicitações com uma URL como a seguinte não conseguem encontrar páginas que tenham a extensão .cshtml ou .vbhtml :

http://www.example.com/ExampleSite/ExampleFile

O problema surge porque a reconfiguração de URL não está habilitada por padrão para o IIS 7 ou IIS 7.5. O cenário mais provável é que você não veja o problema ao testar localmente usando o IIS Express, mas você o experimenta ao implantar seu site em um site de hospedagem.

Solução alternativa

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

Problema: usando o projeto de aplicativo Web ou ASP.NET MVC e ASP.NET páginas da Web no mesmo aplicativo

Se você estava usando ASP.NET Páginas da Web em um projeto de aplicativo Web ou ASP.NET aplicativo MVC, poderá ver um erro informando que WebPageHttpApplication não pode ser encontrado.

Solução alternativa
Se você receber esse erro, altere a classe base da qual o aplicativo deriva. No arquivo Global.asax, altere a seguinte linha:

public class MvcApplication :  WebPageHttpApplication { ... }

Para isso:

public class MvcApplication :  HttpApplication { ... }

Na verdade, isso reverte uma alteração que foi introduzida para a versão Beta 1 de ASP.NET Páginas da Web com sintaxe Razor.

Problema: implantando um aplicativo em um computador que não tem o SQL Server Compact instalado

Os aplicativos que incluem bancos de dados do SQL Server Compact podem ser executados em um computador em que o SQL Server Compact não está instalado. O Microsoft WebMatrix Beta 3 copia automaticamente esses binários para você e executa as transformações de arquivo Web.config apropriadas.

Solução alternativa Se você precisar copiar esses arquivos e fazer as alterações do arquivo Web.config manualmente, faça o seguinte:

  1. Copie os assemblies do mecanismo de banco de dados para a pasta Bin (e subpastas) do aplicativo no computador de destino:

    • Copie C:\Arquivos de Programas\Microsoft SQL Server Compact Edition\v4.0\Desktop\System.Data.SqlServerCe.dll para \Bin
    • Copie C:\Arquivos de Programas\Microsoft SQL Server Compact Edition\v4.0\Private\x86\* to \Bin\x86
    • Copie C:\Arquivos de Programas\Microsoft SQL Server Compact Edition\v4.0\Private\amd64\* to \Bin\amd64
  2. Na pasta raiz do site, crie ou abra um arquivo Web.config . (No WebMatrix Beta 3, esse tipo de arquivo estará disponível se você clicar em Tudo na caixa de diálogo Escolher um tipo de arquivo.)

  3. Adicione o seguinte elemento como filho do elemento de configuração> (não dentro do< elemento system.web>):<

<system.data>
  <DbProviderFactories>
    <remove invariant="System.Data.SqlServerCe.4.0"></remove>
    <add name="Microsoft SQL Server Compact Data Provider" 
      invariant="System.Data.SqlServerCe.4.0" 
      Description=".NET Framework Data Provider for Microsoft SQL Server Compact" 
      type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
  </DbProviderFactories>
</system.data>

Problema: os auxiliares do banco de dados e do WebGrid não funcionam na confiança média no Visual Basic

Se você estiver usando o Visual Basic (criando arquivos .vbhtml ), os Database auxiliares e WebGrid não funcionarão se o aplicativo estiver definido para usar a Confiança Média.

Solução alternativa
Defina temporariamente o aplicativo para usar a Confiança Total.

SQL Server Compact

Problema: a propriedade "Criptografar" não é reconhecida

O SQL Server Compact 4.0 não reconhece a Encrypt propriedade da SqlCeConnection classe. Você não deve usar essa propriedade para criptografar arquivos de banco de dados. A Encrypt propriedade foi preterida na versão 3.5 do SQL Server Compact e foi mantida apenas para compatibilidade com versões anteriores.

Solução alternativa
Use a Encryption Mode SqlCeConnection propriedade da classe para criptografar arquivos de banco de dados do SQL Server Compact 4.0. O exemplo a seguir mostra como criar um banco de dados criptografado do SQL Server Compact 4.0 usando a Encryption Mode propriedade:

SqlCeEngine engine = new SqlCeEngine("Data Source=Northwind.sdf;encryption mode=platform default;Password=<enterStrongPasswordHere>;");
engine.CreateDatabase();
Dim engine As SqlCeEngine = New SqlCeEngine("Data Source=Northwind.sdf;encryption mode=platform default;Password=<enterStrongPasswordHere>;")
engine.CreateDatabase()

Para alterar o modo de criptografia de um banco de dados SQL Server Compact 4.0 existente, faça o seguinte:

SqlCeEngine engine = new SqlCeEngine("Data Source=Northwind.sdf;Password=<enterStrongPasswordHere>;");
engine.Compact("Data Source=Northwind.sdf;encryption mode=ppc2003 compatibility;Password=<enterStrongPasswordHere>;");
Dim engine As SqlCeEngine = New SqlCeEngine("Data Source=Northwind.sdf;Password=<enterStrongPasswordHere>;")
engine.Compact("Data Source=Northwind.sdf;encryption mode=ppc2003 compatibility;Password=<enterStrongPasswordHere>;")

Para criptografar um banco de dados SQL Server Compact 4.0 não criptografado, faça o seguinte:

SqlCeEngine engine = new SqlCeEngine("Data Source=Northwind.sdf");
engine.Compact("Data Source=Northwind.sdf;encryption mode=platform default;Password=<enterStrongPasswordHere>;");
Dim engine As SqlCeEngine = New SqlCeEngine("Data Source=Northwind.sdf;")
engine.Compact("Data Source=Northwind.sdf;encryption mode=platform default;Password=<enterStrongPasswordHere>;")

Problema: as bibliotecas de tempo de execução do Microsoft Visual C++ 2008 são necessárias

As DLLs nativas do SQL Server Compact 4.0 precisam das Bibliotecas de Tempo de Execução do Microsoft Visual C++ 2008 (x86, IA64 e x64), Service Pack 1.

Solução alternativa
Instale o .NET Framework 3.5 SP1. Isso também instala as Bibliotecas de Tempo de Execução do Visual C++ 2008 SP1. Você pode baixar as bibliotecas do seguinte local:

Atualização de segurança da ATL do pacote redistribuível do Microsoft Visual C++ 2008 Service Pack 1

Observação

Observe que a instalação do .NET Framework 2.0, 3.0 ou 4 não instala as Bibliotecas de Tempo de Execução do Visual C++ 2008 SP1.

Problema: se o SQL Server Compact for instalado antes da instalação do .NET Framework no computador, o nome invariável do provedor não será registrado no arquivo machine.config do .NET Framework

O SQL Server Compact pode ser instalado em um computador que não tenha o .NET Framework instalado, pois o SQL Server Compact requer o .NET Framework. Se nem o .NET Framework versão 3.5 nem o 4 estiverem instalados antes da instalação do SQL Server Compact, a Instalação do SQL Server Compact não registrará seu nome invariável do provedor no arquivo machine.config . Qualquer aplicativo que dependa da entrada do SQL Server Compact no arquivo machine.config falhará. A entrada de registro de nome invariável em machine.config é semelhante ao exemplo a seguir:

<system.data>
  <DbProviderFactories>
    <remove invariant="System.Data.SqlServerCe.4.0"></remove>
    <add 
name="Microsoft SQL Server Compact Data Provider" 
invariant="System.Data.SqlServerCe.4.0"
        Description=".NET Framework Data Provider for Microsoft SQL Server Compact" 
        type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, 
Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
    </DbProviderFactories>
</system.data>

Solução alternativa
Desinstale o SQL Server Compact 4.0 CTP1. Baixe e instale as versões completas do .NET Framework no seguinte local:

Microsoft .NET Framework 3.5 Service pack 1 (pacote completo)
Versão do Microsoft .NET Framework 4.0 (pacote completo)

Em seguida, reinstale o SQL Server Compact 4.0 SP1.

Instalando aplicativos

Problema: a instalação de um aplicativo pode levar muito tempo se a pasta Meus Documentos do usuário for redirecionada para um compartilhamento de rede

Solução alternativa
Nenhum. O aplicativo pode demorar um pouco para ser instalado, mas será instalado corretamente.

Publicando aplicativos

Problema: o site pode não funcionar após a publicação se o campo "URL de destino" não estiver prefixado com http:// ou https://

Na caixa de diálogo Configurações de Publicação, se a URL de destino não começar com http:// ou https://, o site poderá não funcionar após a implantação.

Solução alternativa
Certifique-se de que, antes de publicar um site, o URL de destino na caixa de diálogo Configurações de publicação comece com http:// ou https://.

Problema: a publicação de um banco de dados MySQL falha com o erro "Falha ao publicar o banco de dados. Isso pode acontecer se o banco de dados remoto não puder executar o script."

O erro pode ocorrer por vários motivos. Um motivo pelo qual você pode ver esse erro é se o script do banco de dados contiver um caractere de aspas simples (') e o conjunto de caracteres padrão do banco de dados MySQL de destino não for UTF-8.

Solução alternativa
Defina o conjunto de caracteres padrão para o banco de dados MySQL remoto como UTF-8.

Outros problemas

Problema: Pesquisar/Filtrar não funciona em Relatórios para Agrupar por: Tipo de problema

Quando você executa um relatório para um site, se inserir texto na caixa Filtrar por URL e clicar em Pesquisar, nada acontecerá. Isso ocorre porque esse controle não funciona enquanto o estado Agrupar por do relatório está definido como Tipo de Problema, que é o padrão.

Solução alternativa Na guia Agrupar por da faixa de opções, clique em URL para agrupar as entradas por URL de origem. A caixa de texto e o botão para filtrar as entradas funcionam nesse estado.

Problema: os aplicativos WCF não são executados com o IIS Express

Navegar até um aplicativo WCF resulta em um erro como o seguinte:

Não foi possível carregar o arquivo ou assembly 'Microsoft.Web.Administration, Version=7.0.0.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35' ou uma de suas dependências. O sistema não pode encontrar o arquivo especificado.

Isso ocorre porque a versão beta do IIS Express não dá suporte ao WCF por padrão.

Solução alternativa Use qualquer uma das seguintes soluções alternativas (a solução #2 requer o Microsoft Windows Vista ou superior):

  1. Copie os assemblies Microsoft.Web.dll e Microsoft.Web.Administration.dll do local de instalação do WebMatrix para o diretório bin do aplicativo WCF. Por padrão, o WebMatrix é instalado na subpasta Microsoft WebMatrix na pasta Arquivos de Programas do sistema.

  2. No Microsoft Windows Vista ou superior, crie um link simbólico para os assemblies no diretório bin usando os comandos a seguir. (Essa abordagem tem a vantagem de não criar uma cópia dos assemblies.)

    mklink Microsoft.Web.Administration.dll "c:\Program Files (x86)\Microsoft WebMatrix\Microsoft.Web.Administration.dll"
    mklink Microsoft.Web.dll "c:\Program Files (x86)\Microsoft WebMatrix\Microsoft.Web.dll"
    
  3. Instale os dois assemblies no GAC. Em um prompt com privilégios elevados, execute os seguintes comandos:

    gacutil /i  "c:\Program Files (x86)\Microsoft WebMatrix\Microsoft.Web.Administration.dll"
    gacutil /i "c:\Program Files (x86)\Microsoft WebMatrix\Microsoft.Web.dll"
    

Problema: o WebMatrix Beta 3 não consegue executar determinadas tarefas que exigem elevação

O WebMatrix Beta 3 não pode executar determinadas tarefas que exigem elevação, como a instalação de componentes adicionais nas seguintes situações:

  • No Windows Vista ou Windows 7, você está conectado com uma conta que não tem privilégios administrativos e o UAC (Controle de Conta de Usuário) está desabilitado.
  • Você está usando o Microsoft Windows XP ou o Microsoft Windows Server 2003.

Solução alternativa
A maioria das tarefas no WebMatrix Beta 3 não requer permissão administrativa. Para aqueles que o fazem, você pode executar a operação como administrador ou seguir estas etapas:

  • No Windows Vista ou Windows 7, habilite o UAC.
  • No Windows XP, adicione o usuário ao grupo de segurança Administradores.

A opção Site da Web Gallery será desativada se o Web Platform Installer 3.0 não estiver instalado.

Solução alternativa
Instale o Microsoft Web Platform Installer 3.0.

Problema: no Windows Server 2003, o IIS Express não é iniciado para um usuário não administrativo

No Windows Server 2003, quando você inicia uma página ou inicia o IIS Express, o IIS Express não é iniciado. No caso de páginas da Web, um erro é exibido indicando que o aplicativo foi iniciado por um usuário não administrativo.

Solução alternativa
Inicie o WebMatrix Beta 3 como um usuário administrativo.

Problema: o Google Chrome não está disponível como uma opção Executar

O Google Chrome não é exibido na lista de navegadores em Executar na guia Página inicial .

Solução alternativa
Algumas versões do Google Chrome não se registram corretamente com o recurso Programas Padrão no Windows. Como solução alternativa, inicie o Google Chrome, clique no menu Personalizar e controlar o Google Chrome, clique em Opções e, em seguida, clique em Tornar o Google Chrome meu navegador padrão.

Problema: a caixa de diálogo "Chave estrangeira" não permite a inserção de uma chave primária

A caixa de diálogo Chave Estrangeira não permite que você insira o nome da chave primária da tabela de chaves primárias.

Solução alternativa
Isso é intencional. Você não precisa inserir o nome da chave primária da tabela de chaves primárias.

Problema: o botão "Relacionamentos" está desativado

O botão Relações na guia Tabela no espaço de trabalho Bancos de Dados está desabilitado para bancos de dados do SQL Server Compact.

Solução alternativa
Nenhum. O SQL Server Compact não oferece suporte a relações entre tabelas.

Problema: consultas SQL parametrizadas geram exceções

No SQL Server Compact 4.0, se você não especificar um tipo de dados como SqlDbType ou DbType para parâmetros em consultas parametrizadas, uma exceção será lançada quando a consulta for executada.

Solução alternativa
Defina explicitamente o tipo de dados para parâmetros como SqlDbType ou DbType. Isso é crítico no caso de tipos de dados BLOB (image e ntext). Use um código como o seguinte:

SqlCeEngine engine = new SqlCeEngine(connString);
engine.CreateDatabase();
engine.Dispose();
SqlCeConnection conn = new SqlCeConnection(connString);
conn.Open();
SqlCeCommand cmd = conn.CreateCommand();
cmd.CommandText = "CREATE TABLE BlobTable(name nvarchar(128), blob ntext);";
cmd.ExecuteNonQuery();
cmd.CommandText = "INSERT INTO BlobTable(name, blob) VALUES (@name, @blob);";
SqlCeParameter paramName = cmd.Parameters.Add("name", SqlDbType.NVarChar, 128);
SqlCeParameter paramBlob = cmd.Parameters.Add("blob", SqlDbType.NText);
paramName.Value = "Name1";
paramBlob.Value = "Name1".PadLeft(4001);
cmd.ExecuteNonQuery();
Dim engine As SqlCeEngine = New SqlCeEngine(connString)
engine.CreateDatabase()
engine.Dispose()
Dim conn As SqlCeConnection = New SqlCeConnection(connString)
conn.Open()
Dim cmd As SqlCeCommand = conn.CreateCommand()
cmd.CommandText = "CREATE TABLE BlobTable(name nvarchar(128), blob ntext);"
cmd.ExecuteNonQuery()
cmd.CommandText = "INSERT INTO BlobTable(name, blob) VALUES (@name, @blob);"
Dim paramName As SqlCeParameter
Dim paramBlob As SqlCeParameterparamName = cmd.Parameters.Add("name", SqlDbType.NVarChar, 128)
paramName.Value = "Name1"
paramBlob = cmd.Parameters.Add("blob", SqlDbType.NText)
paramBlob.Value = "Name1".PadLeft(4001)
cmd.ExecuteNonQuery()

Para obter mais informações

Para obter mais informações sobre o WebMatrix Beta 3, consulte os seguintes sites: