Partilhar 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

Sumário

Visão geral

O Microsoft WebMatrix Beta é uma pilha de desenvolvimento para a Web gratuita que é instalada em minutos. Ele integra um servidor Web com estruturas de banco de dados e programação para criar uma única experiência integrada. Você pode usar o WebMatrix Beta para simplificar a maneira como você 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 de software livre populares como DotNetNuke, Umbraco, WordPress ou Joomla. O WebMatrix Beta usa o mesmo ambiente avançado de servidor Web, mecanismo de banco de dados e estruturas que executará seu site na Internet, o que torna a transição do desenvolvimento para a produção suave e perfeita.

Instalação

Para instalar o WebMatrix Beta 3, use Microsoft Web Platform Installer 3.0. Depois de instalar o Web Platform Installer, você pode usá-lo para instalar o WebMatrix Beta 3.

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

Instruções para publicar aplicativos

Confira instruções passo a passo para publicar aplicativos

Novos recursos, alterações e problemas de conhecimento

Instalação do WebMatrix Beta 3

Problema: o WebMatrix Beta 3 só está disponível em plataformas que dão suporte ao Microsoft .NET Framework 4

O .NET Framework versão 4 é necessário para o WebMatrix Beta. Em determinados casos, o instalador 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 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 com suporte, 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 no Centro de Download da Microsoft.

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

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

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

Solução alternativa
Desinstale 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 SQL Server Compact 4.0.

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

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

Solução alternativa
Use Programas e Recursos no Windows Painel de Controle 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 do Páginas da Web do ASP.NET com a sintaxe Razor.

Novos recursos na Versão Beta 3 para Páginas da Web do 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 do 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 de "@helper" alterados

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 como um bloco de marcação que pode incluir código. Portanto, o código dentro do auxiliar não precisa ser colocado entre @{ } blocos. Por outro lado, a marcação dentro do auxiliar deve ser incluída explicitamente em elementos HTML ou em ASP.NET marcas 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 marca de abertura <a> . Se o auxiliar precisar renderizar texto sem formatação ou marcas que não incluam uma marca de fechamento (por exemplo, <meta> marcas), o conteúdo a ser renderizado deverá estar em <text></text> marcas.

Alteração: "WebPageContext.HttpContext" removido

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

Alteração: auxiliar "Facebook" movido para o novo pacote

O Facebook auxiliar foi movido para o Facebook. Biblioteca auxiliar, que inclui o Facebook auxiliar e funcionalidades adicionais. Você deve instalar essa biblioteca como um pacote separado, conforme descrito em "Instalando auxiliares com o Gerenciador de Pacotes" no tutorial Introdução com ASP.NET Pages.

Alteração: os tipos de associação, função e segurança são movidos para um 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 movida para o assembly System.Web.WebPages.dll. Anteriormente, isso estava em um assembly que fazia parte do 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 do Razor ASP.NET personalizado), você deve referenciar o namespace (por exemplo, adicionando @using System.Web.Mvc ao seu código).

Alteração: sintaxe de validação de solicitação alterada; Classe "Validação" 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 os 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 na Versão 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 do cliente e a entrada do usuário não será aceita. Se você desabilitar a validação de solicitação, deverá marcar manualmente a entrada do usuário para garantir que ela não contenha marcação ou script potencialmente perigoso impedindo xss (script entre sites) em ASP.NET Core.

Para desabilitar a validação automática de solicitação, chame o Request.Unvalidated método , passando-lhe o nome do campo ou outro objeto post para o qual você deseja ignorar a validação de solicitação. Você pode usar esse método para ignorar a validação de todos os itens nas Formcoleções , QueryStringCookies, 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 Páginas da Web do ASP.NET 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 será 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 um erro por padrão se a tabela especificada não existir e, como ele cria uma nova tabela, o aplicativo pode parecer estar funcionando. No entanto, o código do aplicativo que depende da tabela de usuário personalizada (e dos campos nela) pode falhar com erros inesperados.

Solução alternativa
Verifique se o nome passado no InitializeDatabaseConnection método corresponde à tabela de perfil do usuário no banco de dados de associação ou verifique 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 WebMatrix Web usar SQL Server Express e estiver executando o IIS 7.5 no Windows 7 ou no Windows Server 2008 R2, você poderá ver um erro que indica que SQL Server não pode recuperar o caminho do aplicativo local do usuário em tempo de execução.

Solução alternativa Verifique se a conta do Windows em que o aplicativo é executado (normalmente SERVIÇO DE REDE) tem 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 SQL Server Express instanciação do usuário 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 próprio aplicativo é executado corretamente.

Solução alternativa
Inclua uma using instrução (imports no Visual Basic) que referencie as entidades que não são reconhecidas em tempo de design.

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

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

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

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

Depois de atualizar para o Beta 3, você poderá ver um erro de que uma classe auxiliar (por exemplo, a Facebook classe) não pode ser encontrada. Começando na 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 chamadas para qualquer auxiliar 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 a marca de comentário das linhas que fazem referência aos auxiliares.

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

Se você implantar um site Páginas da Web do ASP.NET em um site de hospedagem e implantar os assemblies do 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 Páginas da Web do ASP.NET Beta 1 no GAC (cache de aplicativos global) do servidor. Os assemblies no GAC têm precedência sobre 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 devido a um conflito entre as versões do provedor dos assemblies e a sua. Nesse caso, 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 informações de proxy no arquivo Web.config para poder ler informações provenientes 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 do ASP.NET, como o feed usado pelo gerenciador de pacotes, podem exigir a configuração de proxy.

Se você tiver problemas ao trabalhar com um serviço externo ou trabalhar com o feed de pacotes, coloque os seguintes elementos no arquivo deWeb.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 do Páginas da Web do ASP.NET com sintaxe Razor e 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ê verá um erro que indica que não foi possível carregarMicrosoft.Web.Infrastructure.dll .

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

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

Problema: desinstalar o .NET Framework versão 4 desabilita Páginas da Web do ASP.NET com a sintaxe razor

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

Solução alternativa Depois de reinstalar o .NET Framework, reinstale Páginas da Web do ASP.NET 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 têm erros de experiência

Durante a implantação, cópias dos assemblies de Páginas da Web do 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 que determinados tipos não podem ser encontrados. Isso ocorre porque vários tipos de Páginas da Web do 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 encontram arquivos .cshtml/.vbhtml no IIS 7 ou IIS 7.5

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

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

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

Solução alternativa

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

Problema: usar o Projeto de Aplicativo Web ou ASP.NET MVC e ASP.NET páginas da Web no mesmo aplicativo

Se você estava usando Páginas da Web do ASP.NET em um projeto de Aplicativo Web ou ASP.NET aplicativo MVC, talvez você veja 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 { ... }

Isso inverte uma alteração que foi introduzida para a versão Beta 1 do Páginas da Web do ASP.NET com a sintaxe Razor.

Problema: implantação de um aplicativo em um computador que não tem SQL Server Compact instalado

Aplicativos que incluem bancos de dados SQL Server Compact podem ser executados em um computador em que 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 deWeb.config apropriadas.

Solução alternativa Se você precisar copiar esses arquivos e fazer as alterações de 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:

    • Copiar C:\Arquivos de Programas\Microsoft SQL Server Compact Edition\v4.0\Desktop\System.Data.SqlServerCe.dllpara\Bin
    • Copiar C:\Arquivos de Programas\Microsoft SQL Server Compact Edition\v4.0\Private\x86\* to\Bin\x86
    • Copiar 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 Todos na caixa de diálogo Escolher um Tipo de Arquivo .)

  3. Adicione o seguinte elemento como um 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 de Banco de Dados e WebGrid não funcionam em 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 "Encrypt" não é reconhecida

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 no SQL Server Compact versão 3.5 e foi mantida apenas para compatibilidade com versões anteriores.

Solução alternativa
Use a Encryption Mode propriedade da SqlCeConnection classe para criptografar SQL Server Compact arquivos de banco de dados 4.0. O exemplo a seguir mostra como criar um banco de dados criptografado 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: Microsoft Visual C++ bibliotecas de runtime do 2008 são necessárias

As DLLs nativas do SQL Server Compact 4.0 precisam do Microsoft Visual C++ 2008 Runtime Libraries (x86, IA64 e x64), Service Pack 1.

Solução alternativa
Instale o .NET Framework 3.5 SP1. Isso também instala as Bibliotecas de Runtime 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 Runtime do Visual C++ 2008 SP1.

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

SQL Server Compact pode ser instalado em um computador que não tem .NET Framework instalado porque SQL Server Compact requer o .NET Framework. Se nem .NET Framework versão 3.5 nem 4 estiverem instaladas antes da instalação do SQL Server Compact, a Instalação do SQL Server Compact não registrará o nome invariável do provedor no arquivo machine.config. Qualquer aplicativo que dependa da entrada SQL Server Compact no arquivo machine.config falhará. A entrada de registro de nome invariável no machine.config se parece com o seguinte exemplo:

<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 SQL Server Compact 4.0 CTP1. Baixe e instale as versões completas do .NET Framework do 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 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 poderá 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
Antes de publicar um site, a URL de destino na caixa de diálogo Configurações de Publicação começa 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 de banco de dados contém um único caractere de aspas (') e o conjunto de caracteres padrão do banco de dados MySQL de destino não é 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: Pesquisa/Filtro não funciona em Relatórios para Agrupar Por: Tipo de Problema

Quando você executa um relatório para um site, se você inserir texto na caixa Filtrar por URL e clicar em Pesquisar, nada acontecerá. Isso ocorre porque esse controle não é funcional 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 sua URL de origem. A caixa de texto e o botão para filtrar as entradas são funcionais enquanto estão nesse estado.

Problema: os aplicativos WCF não são executados com 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 IIS Express versão Beta não dá suporte ao WCF por padrão.

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

  1. Copie os assembliesMicrosoft.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 symlink 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 consegue executar determinadas tarefas que exigem elevação, como instalar componentes adicionais nas seguintes situações:

  • No Windows Vista ou no 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 exige permissão administrativa. Para aqueles que fazem isso, você pode executar a operação como administrador ou seguir estas etapas:

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

A opção Site da Galeria da Web será desabilitada 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, IIS Express não é iniciado para um usuário não administrativo

No Windows Server 2003, quando você inicia uma página ou inicia IIS Express, IIS Express não é iniciado. Para páginas da Web, é exibido um erro que indica 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 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 inserir 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 "Relações" está desabilitado

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

Solução alternativa
Nenhum. SQL Server Compact não dá 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á gerada quando a consulta for executada.

Solução alternativa
Defina explicitamente o tipo de dados para parâmetros como SqlDbType ou DbType. Isso é fundamental 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: