Archivo Léame de la versión Beta 3 de WebMatrix y ASP.NET Web Pages (Razor)

Archivo Léame de la versión Beta 3 de WebMatrix y ASP.NET Web Pages (Razor)

9 de noviembre de 2010

Contenido

Información general

Microsoft WebMatrix Beta es una pila de desarrollo web gratuita que se instala en minutos. Integra un servidor web con bases de datos y marcos de programación para crear una experiencia integrada única. Puede usar WebMatrix Beta para simplificar la forma de codificar, probar y publicar su propio sitio web de ASP.NET o PHP, o para iniciar un nuevo sitio web con aplicaciones populares de código abierto como DotNetNuke, Umbraco, WordPress o Joomla. WebMatrix Beta usa el mismo servidor web, motor de base de datos y entorno de marcos que ejecutará el sitio web en Internet, lo que permite obtener una transición fluida y agilizada entre la fase de desarrollo y la de producción.

Instalación

Para instalar WebMatrix Beta 3, use el Instalador de plataforma web de Microsoft 3.0. Después de instalar el instalador de plataforma web, puede usarlo para instalar WebMatrix Beta 3.

Si tiene problemas durante la instalación, consulte Solución de problemas con el instalador de plataforma web de Microsoft.

Instrucciones para publicar aplicaciones

Consulte Instrucciones paso a paso para publicar aplicaciones

Nuevas características, cambios y problemas conocidos

Instalación de WebMatrix Beta 3

Incidencia: WebMatrix Beta 3 solo está disponible en plataformas que admiten Microsoft .NET Framework 4

La versión 4 de .NET Framework es necesaria para WebMatrix Beta. En determinados casos, el instalador de WebMatrix Beta le permitirá intentar instalar en una plataforma que no forma parte del conjunto de configuración admitido. En concreto, Windows Vista sin la actualización de SP1 le permitirá iniciar la instalación de WebMatrix Beta, pero el componente de .NET Framework 4 producirá un error y bloqueará la instalación.

Solución alternativa
Instálelo en una plataforma compatible, que incluya:

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

Incidencia: no se puede instalar WebMatrix Beta 3 si Microsoft Visual Studio 2008 está instalado sin Microsoft Visual Studio 2008 SP1

Solución alternativa
Instale Microsoft Visual Studio 2008 Service Pack 1 desde el centro de descargas de Microsoft.

Incidencia: algunos ensamblados para SQL Server Compact 4.0 no están instalados en la GAC

Los ensamblados administrados para SQL Server Compact 4.0 no se colocan en la caché global de ensamblados (GAC) al instalar SQL Server Compact 4.0 en un equipo de 64 bits y el equipo solo tiene instalado el perfil de cliente de .NET Framework 3.5 SP1. Los ensamblados administrados que no están instalados en la GAC son:

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

Solución alternativa
Desinstale SQL Server Compact 4.0. Descargue e instale la versión completa de .NET Framework 3.5 SP1 desde la siguiente ubicación:

Microsoft .NET Framework 3.5 Service Pack 1 (paquete completo)

A continuación, vuelva a instalar SQL Server Compact 4.0.

Incidencia: no se puede desinstalar SQL Server Compact mediante la línea de comandos

La desinstalación de SQL Server Compact mediante opciones de línea de comandos no funciona en esta versión.

Solución alternativa
Use Programas y características en el Panel de control de Windows para desinstalar Microsoft SQL Server Compact 4.0.

ASP.NET Web Pages (Más información sobre páginas web de ASP.NET)

En esta sección del documento se describen las nuevas características, los cambios y las incidencias conocidas con la versión Beta 3 de ASP.NET Web Pages con sintaxis de Razor.

Nuevas características en Beta 3 para ASP.NET Web Pages con sintaxis de Razor

Nuevo: el método "Html.Raw" representa marcado sin codificar

El nuevo Html.Raw método permite representar el marcado en HTML como marcado en lugar de representar la salida codificada. (De forma predeterminada, ASP.NET Razor codifica las cadenas antes de representarlas). La sintaxis es la siguiente:

Html.Raw(value)

En el siguiente ejemplo se muestra cómo usar Html.Raw:

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

Cambios en Beta 3 para ASP.NET Web Pages con sintaxis de Razor

Cambio: se ha eliminado el método "HrefAttribute"

El HrefAttribute método de la WebPage clase se ha eliminado. Este asistente se usó para codificar caracteres no seguros en direcciones URL. Ya no es necesario porque ASP.NET Razor codifica automáticamente las cadenas. (Use el nuevo Html.Raw método para representar cadenas sin codificar).

Cambio: se ha cambiado la sintaxis de los asistentes declarativos "@helper"

En la versión Beta 3, ASP.NET cambia el modo en el que analiza los asistentes que se crean mediante la @helper sintaxis. En esencia, la @helper sintaxis ahora se analiza como un bloque de código en lugar de como un bloque de marcado que puede incluir código. Por lo tanto, no es necesario incluir código dentro del asistente en @{ } bloques. Por el contrario, el marcado dentro del asistente debe incluirse explícitamente en elementos HTML o en <text></text> etiquetas de Razor ASP.NET.

Por ejemplo, la siguiente @helper sintaxis funciona en la versión 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>
}

En la versión Beta 3, este asistente debe cambiarse para que tenga un aspecto similar al del ejemplo siguiente:

@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 los @{ } caracteres alrededor del código inicial del asistente ya no se usan. Esto se debe a que el contenido de los asistentes se trata como un bloque de código de forma predeterminada. El asistente representa el marcado, que comienza con la <a> etiqueta de apertura. Si el asistente debe representar texto sin formato o etiquetas que no incluyan una etiqueta de cierre (por ejemplo, <meta> etiquetas), el contenido que se va a representar debe estar en <text></text> etiquetas.

Cambio: se ha eliminado "WebPageContext.HttpContext"

Se ha quitado la propiedad WebPageContext.HttpContext. En su lugar, use HttpContext.Current. (La WebPageContext.HttpContext propiedad simplemente lo encapsulaba).

Cambio: el asistente de "Facebook" se ha trasladado al nuevo paquete

El Facebook asistente se ha trasladado a la biblioteca Facebook.Helper, que incluye el Facebook asistente y la funcionalidad adicional. Debe instalar esta biblioteca como un paquete independiente, como se describe en "Instalación de asistentes con el Administrador de paquetes" en el tutorial Introducción a ASP.NET Pages.

Cambio: los tipos de pertenencia, rol y seguridad se trasladan al nuevo ensamblado

Los siguientes tipos se movieron al WebMatrix.WebData ensamblado:

  • ExtendedMembershipProvider
  • SimpleMembershipProvider
  • SimpleRoleProvider
  • WebSecurity

Cambio: la clase "TagBuilder" se ha trasladado al ensamblado de System.Web.WebPages.dll

La TagBuilder clase se ha trasladado al ensamblado de System.Web.WebPages.dll. Anteriormente, estaba en un ensamblado que formaba parte de ASP.NET MVC. Este cambio significa que no tiene que instalar ASP.NET MVC para poder usar la TagBuilder clase.

Sin embargo, la clase todavía está en el System.Web.Mvc espacio de nombres. Para usar la TagBuilder clase (por ejemplo, en un asistente de Razor de ASP.NET personalizado), debe hacer referencia al espacio de nombres (por ejemplo, agregando @using System.Web.Mvc al código).

Cambio: se ha cambiado la sintaxis de validación de la solicitud; se ha eliminado la clase "Validation"

En la versión Beta 3, para deshabilitar la validación de un campo individual o un conjunto de campos, puede llamar al Validation.Exclude método, pasando el nombre o los nombres de los campos que se van a excluir de la validación. Hay disponible una nueva sintaxis en la versión Beta 3 para omitir la validación. Se ha eliminado el Validation método usado en Beta 3.

Nota:

Si no deshabilita la validación de solicitudes, si los usuarios intentan cargar el marcado HTML (por ejemplo, mediante un editor de texto enriquecido en una página), el sitio web notificará un error como Se ha detectado un valor de Request.Form potencialmente peligroso desde el cliente y no se aceptará la entrada del usuario. Si deshabilita la validación de solicitudes, debe comprobar manualmente la entrada del usuario para asegurarse de que no contiene marcado o script potencialmente peligrosos mediante la prevención del scripting entre sitios (XSS) en ASP.NET Core.

Para deshabilitar la validación automática de solicitudes, llame al Request.Unvalidated método y pase el nombre del campo u otro objeto de la entrada para el que desea omitir la validación de solicitudes. Puede usar este método para omitir la validación de los elementos de las colecciones Form, QueryString, Cookiesy ServerVariables. En el siguiente ejemplo, se muestra cómo utilizar el método Unvalidated:

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 conocidos de ASP.NET Web Pages con sintaxis de Razor

Incidencia: comportamiento inesperado al usar una tabla de usuario personalizada para la pertenencia

Para inicializar el proveedor de pertenencia para un sitio web de Razor de ASP.NET, llame al WebSecurity.InitializeDatabaseConnection método. (En WebMatrix, la plantilla Sitio de inicio incluye una llamada a este método en el archivo _AppStart.cshtml). Si el parámetro autoCreateTables de este método se establece en true (por defecto, se establece en true en la plantilla Sitio de inicio), y si se pasa al método un nombre de tabla no reconocido (el segundo parámetro), el método no lanza un error. En su lugar, crea automáticamente la tabla.

Esto puede ser un problema si piensa usar una tabla de usuario personalizada para la pertenencia, pero pasa el nombre de tabla incorrecto al WebSecurity.InitializeDatabaseConnection método. Dado que el método no genera de forma predeterminada un error si la tabla especificada no existe y, en su lugar, crea una nueva tabla, la aplicación puede parecer que funciona. Sin embargo, el código de aplicación que depende de su tabla de usuario personalizada (y de los campos que contiene) puede fallar eventualmente con errores inesperados.

Solución alternativa
Asegúrese de que el nombre pasado en el InitializeDatabaseConnection método coincide con la tabla de perfiles de usuario de la base de datos de pertenencia o asegúrese de que el autoCreateTablesparámetro está establecido en false.

Incidencia: "Error al generar una instancia de usuario de SQL Server"

Si una aplicación web WebMatrix usa SQL Server Express y ejecuta IIS 7.5 en Windows 7 o Windows Server 2008 R2, es posible que vea un error que indica que SQL Server no puede recuperar la ruta de acceso de la aplicación local del usuario en runtime.

Solución alternativa Asegúrese de que la cuenta de Windows en la que se ejecuta la aplicación (normalmente NETWORK SERVICE) tiene permisos de lectura y escritura para las carpetas raíz de la aplicación y para las subcarpetas como App_Data. La información más detallada está disponible en Problemas con la creación de instancias de usuario de SQL Server Express y proyectos de aplicaciones web ASP.net.

Incidencia: en Visual Studio, los espacios de nombres para ensamblados personalizados (DLL) no se importan automáticamente

Si usa ensamblados personalizados en un proyecto de Visual Studio, los espacios de nombres declarados en esos ensamblados no se importan automáticamente en el tiempo de diseño. Como resultado, es posible que las referencias a tipos personalizados no se reconozcan en el tiempo de diseño y estén marcadas como no reconocidas en Visual Studio (con un "subrayado ondulado"). Este problema solo se produce en el tiempo de diseño en Visual Studio; la propia aplicación se ejecuta correctamente.

Solución alternativa
Incluya una using instrucción (imports en Visual Basic) que haga referencia a las entidades que no se reconocen en el tiempo de diseño.

Incidencia: Visual Studio IntelliSense y plantillas de proyecto disponibles solo en ASP.NET MVC versión 3

La instalación de ASP.NET Web Pages tampoco instala herramientas para Visual Studio, como IntelliSense y plantillas de proyecto para aplicaciones de ASP.NET Web Pages.

Solución alternativa Para usar IntelliSense y plantillas de proyecto para aplicaciones ASP.NET Web Pages en Visual Studio, instale ASP.NET MVC 3 RC a través del Instalador de plataforma web o del instalador independiente.

Incidencia: error "no se encuentra la clase del <asistente>"

Después de actualizar a Beta 3, es posible que vea un error que indica que no se encuentra una clase auxiliar (por ejemplo, la Facebook clase ). A partir de Beta 2 y también en Beta 3, los asistentes se han trasladado a paquetes que debe instalar explícitamente. Los sitios existentes no se actualizan para incluir estos paquetes; esto incluye sitios en las carpetas \Mis documentos\IISExpress o \Mis documentos\Mis sitios web. En concreto, verá este error si usa el sitio web predeterminado en Mis sitios (WebSite1), que incluye una referencia al Twitter asistente.

Solución alternativa
Marque con un comentario las llamadas a los asistentes del sitio, ejecute la página de _Admin e instale el paquete o los paquetes que incluyan los asistentes que desea usar. Después de instalar el paquete, puede quitar la marca de comentario de las líneas que hacen referencia a los asistentes.

Incidencia: la implementación de ensamblados de Beta 3 de ASP.NET Razor en la carpeta Bin podría no funcionar en sitios de hospedaje

Si implementa un sitio web de ASP.NET Web Pages en un sitio de hospedaje y, si implementa los ensamblados de ASP.NET Razor Beta 3 en la carpeta Bin del sitio, puede experimentar errores, incluidos los siguientes:

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

Esto puede ocurrir si el proveedor de hospedaje ha instalado los ensamblados ASP.NET Web Pages Beta 1 en la caché global de aplicaciones (GAC) del servidor. Los ensamblados de la GAC tienen prioridad sobre los ensamblados instalados localmente en la carpeta Bin.

Solución alternativa Póngase en contacto con el proveedor de hospedaje para confirmar que los errores que ve se deben a un conflicto entre las versiones del proveedor de los ensamblados y las suyas. Si es así, solicite que el proveedor de hospedaje actualice los ensamblados en la GAC del servidor.

Incidencia: lectura de fuentes u otros datos externos a través de un servidor proxy

Si el servidor que ejecuta el sitio está detrás de un servidor proxy, es posible que tenga que configurar la información de proxy en el archivo Web.config para poder leer información procedente de fuera del sitio. Por ejemplo, si usa el ReCaptcha asistente, el asistente se comunica con el servicio reCAPTCHA, pero podría estar bloqueado por el servidor proxy. Del mismo modo, las fuentes que se usan en ASP.NET Web Pages, como la fuente usada por el administrador de paquetes, pueden requerir la configuración del proxy.

Si tiene problemas para trabajar con un servicio externo o trabajar con la fuente de paquetes, coloque los siguientes elementos en el archivo Web.config raíz de la aplicación:

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

Para obtener más información sobre cómo configurar un servidor proxy, consulte <Elemento proxy> (Configuración de red) en el sitio web de MSDN.

Incidencia: error "Microsoft.Web.Infrastructure.dll no se puede cargar"

Si instaló previamente la versión Beta 1 de ASP.NET Web Pages con la sintaxis de Razor y, a continuación, instala la versión Beta 3, todos los ensamblados adecuados se instalan en la GAC excepto Microsoft.Web.Infrastructure.dll. Como consecuencia, al ejecutar las páginas de ASP.NET Razor, verá un error que indica que no se ha podido cargar Microsoft.Web.Infrastructure.dll.

Este problema no se producirá si ha cargado la versión Beta 3 en un equipo limpio.

Solución alternativa
En el Panel de control, desinstale ASP.NET Web Pages. A continuación, vuelva a instalar la versión Beta 3.

Incidencia: la desinstalación de .NET Framework versión 4 deshabilita ASP.NET Web Pages con sintaxis de Razor

Si desinstala la versión 4 de .NET Framework y la vuelve a instalar, ASP.NET Web Pages con sintaxis de Razor está deshabilitada. Las páginas con la extensión .cshtml no se ejecutan correctamente. ASP.NET Web Pages registra un ensamblado en el archivo Web.config raíz de la máquina y al quitar .NET Framework se quita ese archivo. La reinstalación de .NET Framework instala una nueva versión del archivo de configuración, pero no agrega la referencia para el ensamblado de ASP.NET Web Pages.

Solución alternativa Después de reinstalar .NET Framework, vuelva a instalar ASP.NET Web Pages con sintaxis de Razor. Esto agrega el siguiente elemento al archivo Web.config en la raíz de la máquina, que normalmente se encuentra en la siguiente ubicación:

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>

Incidencia: las aplicaciones implementadas anteriormente con ensamblados de ASP.NET en la carpeta Bin experimentan errores

Durante la implementación, copias de los ensamblados de ASP.NET Web Pages (por ejemplo, Microsoft.WebPages.dll) en la carpeta Bin del sitio web en el servidor. (Esto puede haberse producido automáticamente durante la implementación o porque el desarrollador copió explícitamente los ensamblados). Sin embargo, cuando se instala la versión Beta 3, se producen errores, como errores de que no se encuentran determinados tipos. Esto ocurre porque varios tipos de ASP.NET Web Pages se han trasladado a diferentes espacios de nombres para la versión Beta 3.

Solución alternativa
Desactive la carpeta Bin de la aplicación implementada, copie los nuevos ensamblados en la carpeta (o vuelva a implementar la aplicación) y reinicie la aplicación.

Incidencia: las direcciones URL sin extensión no encuentran archivos .cshtml/.vbhtml en IIS 7 o IIS 7.5

En IIS 7 o IIS 7.5, las solicitudes con una dirección URL como la siguiente no pueden encontrar páginas que tengan la extensión .cshtml o .vbhtml:

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

La incidencia surge porque la reescritura de direcciones URL no está habilitada de forma predeterminada para IIS 7 o IIS 7.5. El escenario más parecido es que no ve el problema al realizar pruebas locales mediante IIS Express, pero lo experimenta al implementar el sitio web en un sitio web de hospedaje.

Solución alternativa

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

Incidencia: uso del proyecto de aplicación web o ASP.NET MVC y ASP.NET Web Pages en la misma aplicación

Si estaba usando ASP.NET Web Pages en un proyecto de aplicación web o la aplicación ASP.NET MVC, es posible que vea un error que indica que no se puede encontrar WebPageHttpApplication.

Solución alternativa
Si recibe este error, cambie la clase base de la que deriva la aplicación. En el archivo Global.asax, cambie la siguiente línea:

public class MvcApplication :  WebPageHttpApplication { ... }

A esto:

public class MvcApplication :  HttpApplication { ... }

De este modo, se invierte un cambio que se introdujo para la versión Beta 1 de ASP.NET Web Pages con sintaxis de Razor.

Incidencia:implementación de una aplicación en un equipo que no tiene instalado SQL Server Compact

Las aplicaciones que incluyen bases de datos de SQL Server Compact se pueden ejecutar en un equipo donde SQL Server Compact no está instalado. Microsoft WebMatrix Beta 3 copia automáticamente estos archivos binarios y realiza las transformaciones de archivo Web.config adecuadas.

Solución alternativa Si necesita copiar estos archivos y realizar los cambios en el archivo Web.config manualmente, haga lo siguiente:

  1. Copie los ensamblados del motor de base de datos en la carpeta Bin (y subcarpetas) de la aplicación en el equipo de destino:

    • Copie C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Desktop\System.Data.SqlServerCe.dlla\Bin
    • Copie C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Private\x86\* a\Bin\x86
    • Copie C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Private\amd64\* a\Bin\amd64
  2. En la carpeta raíz del sitio web, cree o abra un archivo Web.config. (En WebMatrix Beta 3, este tipo de archivo está disponible si hace clic en Todos en el cuadro de diálogo Elegir un tipo de archivo).

  3. Agregue el siguiente elemento como elemento secundario del elemento de <configuración>(no dentro del 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>

Incidencia: los asistentes de la base de datos y WebGrid no funcionan en confianza media en Visual Basic

Si usa Visual Basic (creando archivos .vbhtml), los asistentes Database y WebGrid no funcionarán si la aplicación está establecida para usar confianza media.

Solución alternativa
Establezca temporalmente la aplicación para que use confianza completa.

SQL Server Compact

Incidencia: no se reconoce la propiedad "Encrypt"

SQL Server Compact 4.0 no reconoce la Encrypt propiedad de la SqlCeConnection clase. No debe usar esta propiedad para cifrar los archivos de base de datos. La Encrypt propiedad estaba en desuso en la versión de SQL Server Compact 3.5 y solo se conservaba por motivos de compatibilidad con versiones anteriores.

Solución alternativa
Use la Encryption Mode propiedad de la SqlCeConnection clase para cifrar los archivos de base de datos de SQL Server Compact 4.0. En el ejemplo siguiente se muestra cómo crear una base de datos cifrada de SQL Server Compact 4.0 mediante la Encryption Mode propiedad:

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 cambiar el modo de cifrado de una base de datos existente de SQL Server Compact 4.0, haga lo siguiente:

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 cifrar una base de datos SQL Server Compact 4.0 sin cifrar, haga lo siguiente:

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>;")

Incidencia: se requieren bibliotecas en runtime de Microsoft Visual C++ 2008

Los archivos DLL nativos de SQL Server Compact 4.0 necesitan las bibliotecas en runtime de Microsoft Visual C++ 2008 (x86, IA64 y x64), Service Pack 1.

Solución alternativa
Instale .NET Framework 3.5 SP1. Esto también instala las bibliotecas en runtime de Visual C++ 2008 SP1. Puede descargar las bibliotecas desde la siguiente ubicación:

Actualización de seguridad de Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package ATL

Nota:

Tenga en cuenta que la instalación de .NET Framework 2.0, 3.0 o 4 no instala las bibliotecas en runtime de Visual C++ 2008 SP1.

Incidencia: si SQL Server Compact está instalado antes de instalar .NET Framework en el equipo, su nombre invariable de proveedor no se registra en el archivo machine.config de .NET Framework

SQL Server Compact se puede instalar en un equipo que no tenga instalado .NET Framework porque SQL Server Compact requiere .NET Framework. Si no se instala .NET Framework versión 3.5 ni 4 antes de instalar SQL Server Compact, el programa de instalación de SQL Server Compact no registrará su nombre invariable de proveedor en el archivo machine.config. Se producirá un error en cualquier aplicación que se base en la entrada de SQL Server Compact en el archivo machine.config. La entrada de registro de nombre invariable en machine.config tiene el siguiente aspecto:

<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>

Solución alternativa
Desinstale SQL Server Compact 4.0 CTP1. Descargue e instale las versiones completas del .NET Framework desde la siguiente ubicación:

Microsoft .NET Framework 3.5 Service Pack 1 (paquete completo)
Versión de Microsoft .NET Framework 4.0 (paquete completo)

A continuación, vuelva a instalar SQL Server Compact 4.0 SP1.

Instalación de aplicaciones

Incidencia: la instalación de una aplicación puede tardar mucho tiempo si la carpeta Mis documentos del usuario se redirige a un recurso compartido de red

Solución alternativa
Ninguno. La aplicación puede tardar un tiempo en instalarse, pero se instalará correctamente.

Publicación de aplicaciones

Incidencia: es posible que el sitio no funcione después de publicar si el campo "Dirección URL de destino" no tiene el prefijo http:// o https://

En el cuadro de diálogo Configuración de publicación, si la dirección URL de destino no comienza con http:// o https://, es posible que el sitio no funcione después de la implementación.

Solución alternativa
Asegúrese de que antes de publicar un sitio, la dirección URL de destino del cuadro de diálogo Configuración de publicación comienza con http:// o https://.

Incidencia: se produce un error al publicar una base de datos MySQL con el error "No se pudo publicar la base de datos. Esto puede ocurrir si la base de datos remota no puede ejecutar el script".

El error puede producirse por varias razones. Una de las razones por las que puede aparecer este error es si el script de la base de datos contiene un único carácter de comillas (') y el juego de caracteres por defecto de la base de datos MySQL de destino no es UTF-8.

Solución alternativa
Establezca el juego de caracteres predeterminado para la base de datos MySQL remota en UTF-8.

Otras incidencias

Incidencia: la búsqueda o el filtro no funciona en los informes de Agrupar por: Tipo de incidencia

Al ejecutar un informe para un sitio web, si escribe texto en el cuadro Filtrar por dirección URL y hace clic en Buscar, no sucede nada. Esto se debe a que este control no es funcional mientras el estado Agrupar por del informe esté establecido en Tipo de incidencia, que es el valor predeterminado.

Solución alternativa En la pestaña Agrupar por de las opciones, haga clic en dirección URL para agrupar las entradas por su dirección URL de origen. El cuadro de texto y el botón para filtrar las entradas son funcionales mientras están en este estado.

Incidencia: las aplicaciones de WCF no se pueden ejecutar con IIS Express

Al ir a una aplicación de WCF produce un error similar al siguiente:

No se puede cargar el archivo o ensamblado 'Microsoft.Web.Administration, Version=7.0.0.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35' ni una de sus dependencias. El sistema no puede encontrar el archivo especificado.

Esto ocurre porque la versión beta de IIS Express no admite WCF de forma predeterminada.

Solución alternativa Use cualquiera de las siguientes soluciones alternativas (la solución alternativa n.º 2 requiere Microsoft Windows Vista o superior):

  1. Copie los ensamblados Microsoft.Web.dll y Microsoft.Web.Administration.dll de la ubicación de instalación de WebMatrix en el directorio bin de la aplicación WCF. De forma predeterminada, WebMatrix se instala en la subcarpeta Microsoft WebMatrix en la carpeta Archivos de programa del sistema.

  2. En Microsoft Windows Vista o superior, cree un vínculo simbólico a los ensamblados del directorio bin mediante los siguientes comandos. (Este enfoque tiene la ventaja de que no crea una copia de los ensamblados).

    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 los dos ensamblados en la GAC. Desde un símbolo elevado, ejecute los siguientes comandos:

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

Incidencia: WebMatrix Beta 3 no puede realizar determinadas tareas que requieren elevación

WebMatrix Beta 3 no puede realizar determinadas tareas que requieren elevación, como la instalación de componentes adicionales en las siguientes situaciones:

  • En Windows Vista o Windows 7, ha iniciado sesión con una cuenta que no tiene privilegios administrativos y el Control de cuentas de usuario (UAC) está deshabilitado.
  • Usa Microsoft Windows XP o Microsoft Windows Server 2003.

Solución alternativa
La mayoría de las tareas de WebMatrix Beta 3 no requieren permiso administrativo. Para aquellas que lo hacen, puede realizar la operación como administrador o seguir estos pasos:

  • En Windows Vista o Windows 7, habilite UAC.
  • En Windows XP, agregue el usuario al grupo de seguridad Administradores.

La opción Sitio desde la galería web está deshabilitada si el instalador de plataforma web 3.0 no está instalado.

Solución alternativa
Instale el instalador de plataforma web de Microsoft 3.0.

Incidencia: en Windows Server 2003, IIS Express no se inicia para un usuario no administrativo

En Windows Server 2003, al iniciar una página o iniciar IIS Express, IIS Express no se inicia. En el caso de las páginas web, se muestra un error que indica que un usuario no administrativo ha iniciado la aplicación.

Solución alternativa
Inicie WebMatrix Beta 3 como usuario administrativo.

Incidencia: Google Chrome no está disponible como opción Ejecutar

Google Chrome no se muestra en la lista de exploradores en Ejecutar en la pestaña Inicio.

Solución alternativa
Algunas versiones de Google Chrome no se registran correctamente con la característica Programas predeterminados en Windows. Como solución alternativa, inicie Google Chrome, haga clic en el menú Personalizar y controlar Google Chrome, haga clic en Opciones y, a continuación, haga clic en Convertir Google Chrome en mi explorador predeterminado.

Incidencia: el cuadro de diálogo "Clave externa" no permite escribir una clave principal

El cuadro de diálogo Clave externa no permite escribir el nombre de clave principal de la tabla de claves principal.

Solución alternativa
Esto tiene su porqué. No es necesario escribir el nombre de la clave principal de la tabla de claves principales.

Incidencia: el botón "Relaciones" está deshabilitado

El botón Relaciones de la pestaña Tabla del área de trabajo Bases de datos está deshabilitado para las bases de datos de SQL Server Compact.

Solución alternativa
Ninguno. SQL Server Compact no admite relaciones entre tablas.

Incidencia: las consultas de SQL parametrizadas producen excepciones

En SQL Server Compact 4.0, si no especifica un tipo de datos como SqlDbType o DbType para parámetros en consultas parametrizadas, se produce una excepción cuando se ejecuta la consulta.

Solución alternativa
Establezca explícitamente el tipo de datos para parámetros como SqlDbType o DbType. Esto es fundamental en el caso de los tipos de datos BLOB (image y ntext). Use código como el siguiente:

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 obtener más información

Para obtener más información sobre WebMatrix Beta 3, consulte los siguientes sitios web: