Leggere in inglese

Condividi tramite


File Leggimi di WebMatrix e pagine Web ASP.NET (Razor) Beta 3

File Leggimi di WebMatrix e pagine Web ASP.NET (Razor) Beta 3

9 novembre 2010

Contenuto

Panoramica

Microsoft WebMatrix Beta è uno stack di sviluppo Web gratuito che viene installato in pochi minuti. Integra un server Web con framework di database e programmazione per creare un'unica esperienza integrata. È possibile usare WebMatrix Beta per semplificare il modo in cui scrivere codice, testare e pubblicare il proprio sito Web ASP.NET o PHP oppure è possibile usare WebMatrix Beta per avviare un nuovo sito Web usando app open source popolari come DotNetNuke, Umbraco, WordPress o Parimenti. WebMatrix Beta usa lo stesso potente server Web, motore di database e framework che eseguirà il sito Web su Internet, che rende la transizione dallo sviluppo alla produzione senza problemi.

Installazione

Nota

WebMatrix non è più consigliato come ambiente di sviluppo integrato per Pagine Web ASP.NET. Usare Visual Studio o Visual Studio Code.

In caso di problemi durante l'installazione, vedere Risoluzione dei problemi relativi alla Installazione guidata piattaforma Web Microsoft.

Istruzioni per la pubblicazione di applicazioni

Vedere Istruzioni dettagliate per la pubblicazione di applicazioni

Nuovi problemi di funzionalità, modifiche eKnown

Installazione di WebMatrix Beta 3

Problema: WebMatrix Beta 3 è disponibile solo nelle piattaforme che supportano Microsoft .NET Framework 4

.NET Framework versione 4 è necessario per WebMatrix Beta. In alcuni casi, il programma di installazione WebMatrix Beta consente di provare a eseguire l'installazione in una piattaforma che non fa parte del set di configurazione supportato. In particolare, Windows Vista senza l'aggiornamento di SP1 consentirà di avviare l'installazione di WebMatrix Beta, ma il componente .NET Framework 4 avrà esito negativo e bloccherà l'installazione.

Soluzione alternativa
Eseguire l'installazione in una piattaforma supportata, che include:

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

Problema: impossibile installare WebMatrix Beta 3 se Microsoft Visual Studio 2008 è installato senza Microsoft Visual Studio 2008 SP1

Soluzione alternativa
Installare Microsoft Visual Studio 2008 Service Pack 1 dall'Area download Microsoft.

Problema: alcuni assembly per SQL Server Compact 4.0 non sono installati nella GAC

Gli assembly gestiti per SQL Server Compact 4.0 non vengono inseriti nella Global Assembly Cache (GAC) quando si installa SQL Server Compact 4.0 in un computer a 64 bit e nel computer è installato solo il profilo client .NET Framework 3.5 SP1. Gli assembly gestiti non installati nella GAC sono:

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

Soluzione alternativa
Disinstallare SQL Server Compact 4.0. Scaricare e installare la versione completa di .NET Framework 3.5 SP1 dal percorso seguente:

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

Reinstallare quindi SQL Server Compact 4.0.

Problema: Impossibile disinstallare SQL Server Compact tramite la riga di comando

La disinstallazione di SQL Server Compact con le opzioni della riga di comando non funziona in questa versione.

Soluzione alternativa
Usare programmi e funzionalità in Windows Pannello di controllo per disinstallare Microsoft SQL Server Compact 4.0.

ASP.NET Web Pages

Questa sezione del documento descrive le nuove funzionalità, le modifiche e i problemi noti relativi alla versione Beta 3 di Pagine Web ASP.NET con la sintassi Razor.

Nuove funzionalità della versione Beta 3 per Pagine Web ASP.NET con sintassi Razor

Nuovo: il metodo "Html.Raw" esegue il rendering di markup non codificato

Il nuovo Html.Raw metodo consente di eseguire il rendering del markup HTML come markup invece di eseguire il rendering dell'output codificato. Per impostazione predefinita, ASP.NET Razor codifica le stringhe prima di eseguirne il rendering. La sintassi è:

Html.Raw(value)

Nell'esempio riportato di seguito viene illustrato come usare Html.Raw:

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

Modifiche apportate alla versione Beta 3 per Pagine Web ASP.NET con sintassi Razor

Modifica: metodo "HrefAttribute" rimosso

Il HrefAttribute metodo della WebPage classe è stato rimosso. Questo helper è stato usato per codificare caratteri non sicuri negli URL. Non è più necessario perché ASP.NET Razor codifica automaticamente le stringhe. Usare il nuovo Html.Raw metodo per eseguire il rendering di stringhe non codificate.

Modifica: la sintassi per gli helper dichiarativi "@helper" è stata modificata

Nella versione Beta 3 ASP.NET modifica il modo in cui analizza gli helper creati usando la @helper sintassi . In sostanza, la @helper sintassi viene ora analizzata come blocco di codice anziché come blocco di markup che può includere codice. Pertanto, il codice all'interno dell'helper non deve essere racchiuso tra @{ } blocchi. Viceversa, il markup all'interno dell'helper deve essere incluso in modo esplicito negli elementi HTML o in ASP.NET tag Razor <text></text> .

Ad esempio, la sintassi seguente @helper funziona nella versione 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>
}

Nella versione Beta 3 questo helper deve essere modificato in modo che sia simile all'esempio seguente:

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

Si noti che i @{ } caratteri intorno al codice iniziale nell'helper non vengono più usati. Ciò è dovuto al fatto che il contenuto degli helper viene considerato come blocco di codice per impostazione predefinita. L'helper esegue il rendering del markup, che inizia con il tag di apertura <a> . Se l'helper deve eseguire il rendering di testo normale o tag che non includono un tag di chiusura (ad esempio, <meta> tag), il contenuto di cui eseguire il rendering deve essere in <text></text> tag.

Modifica: "WebPageContext.HttpContext" rimosso

La proprietà WebPageContext.HttpContext è stata rimossa. Utilizzare invece HttpContext.Current. La WebPageContext.HttpContext proprietà è stata semplicemente sottoposta a wrapping.

Modifica: helper "Facebook" spostato nel nuovo pacchetto

L'helper Facebook è stato spostato nella libreria Facebook.Helper, che include l'helper Facebook e funzionalità aggiuntive. È necessario installare questa libreria come pacchetto separato, come descritto in "Installazione di helper con Gestione pacchetti" nell'esercitazione Introduzione alle pagine ASP.NET.

Modifica: i tipi di appartenenza, ruolo e sicurezza passano al nuovo assembly

Nell'assembly WebMatrix.WebData sono stati spostati i tipi seguenti:

  • ExtendedMembershipProvider
  • SimpleMembershipProvider
  • SimpleRoleProvider
  • WebSecurity

Modifica: classe "TagBuilder" spostata nell'assembly System.Web.WebPages.dll

La TagBuilder classe è stata spostata nell'assembly System.Web.WebPages.dll. In precedenza, si trovava in un assembly che faceva parte di ASP.NET MVC. Questa modifica significa che non è necessario installare ASP.NET MVC per usare la TagBuilder classe .

Tuttavia, la classe è ancora nello spazio dei System.Web.Mvc nomi . Per usare la TagBuilder classe (ad esempio, in un helper Razor personalizzato ASP.NET), è necessario fare riferimento allo spazio dei nomi , ad esempio aggiungendo @using System.Web.Mvc al codice.

Modifica: richiesta di sintassi di convalida modificata; Classe "Validation" rimossa

Nella versione Beta 3, per disabilitare la convalida per un singolo campo o un set di campi, è possibile chiamare il Validation.Exclude metodo , passando il nome o i nomi dei campi da escludere dalla convalida. Nella versione Beta 3 è disponibile una nuova sintassi per ignorare la convalida. Il Validation metodo usato nella versione Beta 3 è stato rimosso.

Nota

Se non si disabilita la convalida delle richieste, se gli utenti tentano di caricare markup HTML (ad esempio, usando un editor di testo RTF in una pagina), il sito Web segnala un errore simile a Un valore Request.Form potenzialmente pericoloso rilevato dal client e l'input dell'utente non viene accettato. Se si disabilita la convalida delle richieste, è necessario controllare manualmente l'input dell'utente per assicurarsi che non contenga markup o script potenzialmente pericolosi impedendo lo scripting tra siti (XSS) in ASP.NET Core.

Per disabilitare la convalida automatica delle richieste, chiamare il Request.Unvalidated metodo , passandolo il nome del campo o di un altro oggetto post per cui si vuole ignorare la convalida della richiesta. È possibile usare questo metodo per ignorare la convalida di tutti gli elementi nelle Formraccolte , QueryString, Cookiese ServerVariables . Gli esempi seguenti illustrano come usare il Unvalidated metodo :

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

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

Problemi noti per Pagine Web ASP.NET con la sintassi Razor

Problema: comportamento imprevisto quando si usa una tabella utente personalizzata per l'appartenenza

Per inizializzare il provider di appartenenze per un sito Web Razor ASP.NET, chiamare il WebSecurity.InitializeDatabaseConnection metodo . In WebMatrix il modello Starter Site include una chiamata a questo metodo nel file _AppStart.cshtml . Se il autoCreateTables parametro di questo metodo è impostato su true (per impostazione predefinita, è impostato su true nel modello starter site) e se un nome di tabella non riconosciuto viene passato al metodo (il secondo parametro), il metodo non genera un errore. Crea invece automaticamente la tabella.

Questo può essere un problema se si intende usare una tabella utente personalizzata per l'appartenenza, ma passare il nome di tabella errato al WebSecurity.InitializeDatabaseConnection metodo . Poiché il metodo non genera per impostazione predefinita un errore se la tabella specificata non esiste e, poiché crea invece una nuova tabella, l'applicazione può sembrare funzionante. Tuttavia, il codice dell'applicazione che si basa sulla tabella utente personalizzata (e sui campi in esso contenuti) può infine non riuscire con errori imprevisti.

Soluzione alternativa
Assicurarsi che il nome passato nel InitializeDatabaseConnection metodo corrisponda alla tabella del profilo utente nel database di appartenenza oppure assicurarsi che il autoCreateTables parametro sia impostato su false.

Problema: errore "Impossibile generare un'istanza utente di SQL Server"

Se un'applicazione WebMatrix usa SQL Server Express ed esegue IIS 7.5 in Windows 7 o Windows Server 2008 R2, è possibile che venga visualizzato un errore che indica che SQL Server non è in grado di recuperare il percorso dell'applicazione locale dell'utente in fase di esecuzione.

Soluzione alternativa Assicurarsi che l'account di Windows in cui viene eseguita l'applicazione (in genere NETWORK SERVICE) disponga delle autorizzazioni di lettura/scrittura per le cartelle radice dell'applicazione e per le sottocartelle, ad esempio App_Data. Informazioni più dettagliate sono disponibili in Problemi con la creazione di istanze degli utenti di SQL Server Express e ASP.net progetti di applicazioni Web.

Problema: in Visual Studio gli spazi dei nomi per gli assembly personalizzati (DLL) non vengono importati automaticamente

Se si usano assembly personalizzati in un progetto in Visual Studio, gli spazi dei nomi dichiarati in tali assembly non vengono importati automaticamente in fase di progettazione. Di conseguenza, i riferimenti ai tipi personalizzati potrebbero non essere riconosciuti in fase di progettazione e contrassegnati come non riconosciuti in Visual Studio (usando una "sottolineatura ondulata"). Questo problema si verifica solo in fase di progettazione in Visual Studio; l'applicazione stessa viene eseguita correttamente.

Soluzione alternativa
Includere un'istruzione using (imports in Visual Basic) che fa riferimento alle entità non riconosciute in fase di progettazione.

Problema: Visual Studio IntelliSense e i modelli di progetto disponibili solo in ASP.NET MVC versione 3

L'installazione di Pagine Web ASP.NET non installa anche gli strumenti per Visual Studio, ad esempio IntelliSense e i modelli di progetto per le applicazioni Pagine Web ASP.NET.

Soluzione alternativa Per usare IntelliSense e i modelli di progetto per le applicazioni Pagine Web ASP.NET in Visual Studio, installare ASP.NET MVC 3 RC tramite Il programma di installazione della piattaforma Web o il programma di installazione autonomo.

Problema: errore "<Impossibile trovare la classe helper> "

Dopo l'aggiornamento alla versione Beta 3, potrebbe essere visualizzato un errore che indica che non è possibile trovare una classe helper ( ad esempio la Facebook classe ). A partire dalla versione Beta 2 e continuando in Beta 3, gli helper sono stati spostati nei pacchetti che è necessario installare in modo esplicito. I siti esistenti non vengono aggiornati per includere questi pacchetti; sono inclusi i siti nelle cartelle \Documenti\IISExpress o \Documenti\Siti Web personali. In particolare, verrà visualizzato questo errore se si usa il sito predefinito in Siti personali (WebSite1), che include un riferimento all'helper Twitter .

Soluzione alternativa
Impostare come commento le chiamate a qualsiasi helper nel sito, eseguire la pagina _Admin e installare il pacchetto o i pacchetti che includono gli helper da usare. Dopo aver installato il pacchetto, è possibile rimuovere il commento dalle righe che fanno riferimento agli helper.

Problema: la distribuzione di assembly Razor beta 3 ASP.NET nella cartella Bin potrebbe non funzionare nei siti di hosting

Se si distribuisce un sito Web di Pagine Web ASP.NET in un sito di hosting e se si distribuiscono gli assembly Razor Beta 3 ASP.NET nella cartella Bin del sito, è possibile che si verifichino errori, inclusi i seguenti:

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

Ciò può verificarsi se il provider di hosting ha installato gli assembly Pagine Web ASP.NET Beta 1 nella Global Application Cache (GAC) del server. Gli assembly nella GAC hanno la precedenza sugli assembly installati localmente nella cartella Bin .

Soluzione alternativa Contattare il provider di hosting per verificare che gli errori visualizzati siano dovuti a un conflitto tra le versioni del provider degli assembly e il proprio. In tal caso, richiedere al provider di hosting di aggiornare gli assembly nella GAC del server.

Problema: lettura di feed o altri dati esterni tramite un server proxy

Se il server che esegue il sito si trova dietro un server proxy, potrebbe essere necessario configurare le informazioni proxy nel file Web.config per poter leggere informazioni provenienti dall'esterno del sito. Ad esempio, se si usa l'helper, l'helper ReCaptcha comunica con il servizio reCAPTCHA, ma potrebbe essere bloccato dal server proxy. Analogamente, i feed usati in Pagine Web ASP.NET, ad esempio il feed usato dalla gestione pacchetti, potrebbero richiedere la configurazione proxy.

Se si verificano problemi durante l'uso di un servizio esterno o l'uso del feed del pacchetto, inserire gli elementi seguenti nel file Web.config radice dell'applicazione:

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

Per altre informazioni sulla configurazione di un server proxy, vedere <Elemento proxy> (impostazioni di rete) nel sito Web MSDN.

Problema: errore "impossibile caricare Microsoft.Web.Infrastructure.dll"

Se in precedenza è stata installata la versione Beta 1 di Pagine Web ASP.NET con la sintassi Razor e quindi si installa la versione Beta 3, tutti gli assembly appropriati vengono installati nella GAC tranne Microsoft.Web.Infrastructure.dll. Di conseguenza, quando si esegue ASP.NET pagine Razor, viene visualizzato un errore che indica che non è stato possibile caricare Microsoft.Web.Infrastructure.dll .

Questo problema non si verifica se è stata caricata la versione Beta 3 in un computer pulito.

Soluzione alternativa
In Pannello di controllo disinstallare Pagine Web ASP.NET. Reinstallare quindi la versione Beta 3.

Problema: la disinstallazione di .NET Framework versione 4 disabilita Pagine Web ASP.NET con la sintassi Razor

Se si disinstalla .NET Framework versione 4 e quindi si reinstalla, Pagine Web ASP.NET con la sintassi Razor è disabilitata. Le pagine con estensione cshtml non vengono eseguite correttamente. Pagine Web ASP.NET registra un assembly nella radice del computerIl file Web.config e la rimozione di .NET Framework rimuove il file. La reinstallazione di .NET Framework installa una nuova versione del file di configurazione, ma non aggiunge il riferimento per l'assembly Pagine Web ASP.NET.

Soluzione alternativa Dopo aver reinstallato .NET Framework, reinstallare Pagine Web ASP.NET con la sintassi Razor. In questo modo viene aggiunto l'elemento seguente al file Web.config nella radice del computer, che in genere si trova nel percorso seguente:

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: le applicazioni distribuite in precedenza con assembly ASP.NET nell'esperienza della cartella Bin riscontrano errori

Durante la distribuzione, copie degli assembly Pagine Web ASP.NET (ad esempio, Microsoft.WebPages.dll) nella cartella Bin del sito Web nel server. Ciò potrebbe essersi verificato automaticamente durante la distribuzione o perché lo sviluppatore ha copiato in modo esplicito gli assembly. Tuttavia, quando viene installata la versione Beta 3, si verificano errori, ad esempio errori che non è possibile trovare determinati tipi. Ciò si verifica perché diversi tipi di Pagine Web ASP.NET sono stati spostati in spazi dei nomi diversi per la versione Beta 3.

Soluzione alternativa
Cancellare la cartella Bin dell'applicazione distribuita, copiare i nuovi assembly nella cartella (o ridistribuire l'applicazione) e quindi riavviare l'applicazione.

Problema: gli URL senza estensione non trovano file con estensione cshtml/.vbhtml in IIS 7 o IIS 7.5

In IIS 7 o IIS 7.5 le richieste con un URL simile al seguente non sono in grado di trovare pagine con estensione cshtml o vbhtml :

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

Il problema si verifica perché la riscrittura dell'URL non è abilitata per impostazione predefinita per IIS 7 o IIS 7.5. Lo scenario più simile è che non viene visualizzato il problema durante il test in locale con IIS Express, ma si verifica quando si distribuisce il sito Web in un sito Web di hosting.

Soluzione alternativa

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

Problema: uso del progetto applicazione Web o ASP.NET MVC e ASP.NET pagine Web nella stessa applicazione

Se si usa Pagine Web ASP.NET in un progetto applicazione Web o ASP.NET'applicazione MVC, è possibile che venga visualizzato un errore che WebPageHttpApplication non è stato trovato.

Soluzione alternativa
Se viene visualizzato questo errore, modificare la classe di base da cui deriva l'applicazione. Nel file Global.asax modificare la riga seguente:

public class MvcApplication :  WebPageHttpApplication { ... }

In questa:

public class MvcApplication :  HttpApplication { ... }

Ciò in effetti inverte una modifica introdotta per la versione Beta 1 di Pagine Web ASP.NET con la sintassi Razor.

Problema: Distribuzione di un'applicazione in un computer in cui non è installato SQL Server Compact

Le applicazioni che includono database SQL Server Compact possono essere eseguite in un computer in cui SQL Server Compact non è installato. Microsoft WebMatrix Beta 3 copia automaticamente questi file binari ed esegue le trasformazioni del file Web.config appropriate.

Soluzione alternativa Se è necessario copiare questi file e apportare manualmente le modifiche al file Web.config , eseguire le operazioni seguenti:

  1. Copiare gli assembly del motore di database nella cartella Bin (e sottocartelle) dell'applicazione nel computer di destinazione:

    • Copiare C:\Programmi\Microsoft SQL Server Compact Edition\v4.0\Desktop\System.Data.SqlServerCe.dll in \Bin
    • Copiare C:\Programmi\Microsoft SQL Server Compact Edition\v4.0\Private\x86\* to \Bin\x86
    • Copiare C:\Programmi\Microsoft SQL Server Compact Edition\v4.0\Private\amd64\* to \Bin\amd64
  2. Nella cartella radice del sito Web creare o aprire un file Web.config . (In WebMatrix Beta 3 questo tipo di file è disponibile se si fa clic su Tutto nella finestra di dialogo Scegli un tipo di file.

  3. Aggiungere l'elemento seguente come elemento figlio dell'elemento di configurazione> (non all'interno dell'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: gli helper di Database e WebGrid non funzionano in Attendibilità media in Visual Basic

Se si usa Visual Basic (creazione di file vbhtml ), gli Database helper e WebGrid non funzioneranno se l'applicazione è impostata per l'uso dell'attendibilità media.

Soluzione alternativa
Impostare temporaneamente l'applicazione per l'uso dell'attendibilità totale.

SQL Server Compact

Problema: la proprietà "Encrypt" non è riconosciuta

SQL Server Compact 4.0 non riconosce la Encrypt proprietà della SqlCeConnection classe . Non utilizzare questa proprietà per crittografare i file di database. La Encrypt proprietà è stata deprecata nella versione di SQL Server Compact 3.5 ed è stata mantenuta solo per compatibilità con le versioni precedenti.

Soluzione alternativa
Utilizzare la Encryption Mode proprietà della SqlCeConnection classe per crittografare i file di database di SQL Server Compact 4.0. Nell'esempio seguente viene illustrato come creare un database SQL Server Compact 4.0 crittografato usando la Encryption Mode proprietà :

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

Per modificare la modalità di crittografia di un database SQL Server Compact 4.0 esistente, eseguire le operazioni seguenti:

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

Per crittografare un database SQL Server Compact 4.0 non crittografato, eseguire le operazioni seguenti:

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: sono necessarie librerie di runtime di Microsoft Visual C++ 2008

Le DLL native di SQL Server Compact 4.0 richiedono le librerie di runtime di Microsoft Visual C++ 2008 (x86, IA64 e x64), Service Pack 1.

Soluzione alternativa
Installare .NET Framework 3.5 SP1. In questo modo vengono installate anche le librerie di runtime di Visual C++ 2008 SP1. È possibile scaricare le librerie dal percorso seguente:

Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package ATL Security Update

Nota

Si noti che l'installazione di .NET Framework 2.0, 3.0 o 4 non installa le librerie di runtime di Visual C++ 2008 SP1.

Problema: se SQL Server Compact viene installato prima di installare .NET Framework nel computer, il nome invariante del provider non è registrato nel file machine.config di .NET Framework

SQL Server Compact può essere installato in un computer in cui non è installato .NET Framework perché SQL Server Compact richiede .NET Framework. Se non è installato né .NET Framework versione 3.5 né 4 prima di installare SQL Server Compact, il programma di installazione di SQL Server Compact non registra il nome invariante del provider nel file machine.config . Qualsiasi applicazione che si basa sulla voce SQL Server Compact nel file machine.config avrà esito negativo. La voce di registrazione del nome invariante in machine.config è simile all'esempio seguente:

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

Soluzione alternativa
Disinstallare SQL Server Compact 4.0 CTP1. Scaricare e installare le versioni complete di .NET Framework dal percorso seguente:

Microsoft .NET Framework 3.5 Service Pack 1 (pacchetto completo)
Versione di Microsoft .NET Framework 4.0 (pacchetto completo)

Reinstallare quindi SQL Server Compact 4.0 SP1.

Installazione di applicazioni

Problema: l'installazione di un'applicazione può richiedere molto tempo se la cartella Documenti personali dell'utente viene reindirizzata a una condivisione di rete

Soluzione alternativa
Nessuno. L'applicazione potrebbe richiedere un po' di tempo, ma verrà installata correttamente.

Pubblicazione di applicazioni

Problema: il sito potrebbe non funzionare dopo la pubblicazione se il campo "URL di destinazione" non è preceduto da http:// o https://

Nella finestra di dialogo Impostazioni di pubblicazione, se l'URL di destinazione non inizia con http:// o https://, il sito potrebbe non funzionare dopo la distribuzione.

Soluzione alternativa
Assicurarsi che prima di pubblicare un sito, l'URL di destinazione nella finestra di dialogo Impostazioni di pubblicazione inizia con http:// o https://.

Problema: la pubblicazione di un database MySQL ha esito negativo e viene visualizzato l'errore "Impossibile pubblicare il database. Ciò può verificarsi se il database remoto non può eseguire lo script."

L'errore può verificarsi per diversi motivi. Un motivo per cui è possibile vedere questo errore è se lo script del database contiene una virgoletta singola (') e il set di caratteri predefinito del database MySQL di destinazione non è UTF-8.

Soluzione alternativa
Impostare il set di caratteri predefinito per il database MySQL remoto su UTF-8.

Altri problemi

Problema: La ricerca/filtro non funziona nei report per group by: tipo di problema

Quando si esegue un report per un sito, se si immette testo nella casella Filtra per URL e si fa clic su Cerca, non accade nulla. Questo perché questo controllo non è funzionale mentre lo stato Group By del report è impostato su Tipo di problema, ovvero l'impostazione predefinita.

Soluzione alternativa Nella scheda Raggruppa per della barra multifunzione fare clic su URL per raggruppare le voci in base all'URL di origine. La casella di testo e il pulsante per filtrare le voci sono funzionali in questo stato.

Problema: l'esecuzione delle applicazioni WCF con IIS Express non riesce

L'esplorazione di un'applicazione WCF genera un errore simile al seguente:

Impossibile caricare il file o l'assembly 'Microsoft.Web.Administration, Version=7.0.0.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35' o una delle relative dipendenze. Non è possibile trovare il file specificato.

Ciò si verifica perché la versione beta di IIS Express non supporta WCF per impostazione predefinita.

Soluzione alternativa Usare una delle soluzioni alternative seguenti (soluzione alternativa n. 2 richiede Microsoft Windows Vista o versione successiva):

  1. Copiare gli assembly Microsoft.Web.dll e Microsoft.Web.Administration.dll dal percorso di installazione webMatrix alla directory bin dell'applicazione WCF. Per impostazione predefinita, WebMatrix viene installato nella sottocartella Microsoft WebMatrix nella cartella Programmi del sistema.

  2. In Microsoft Windows Vista o versione successiva creare un collegamento simbolico agli assembly nella directory bin usando i comandi seguenti. Questo approccio ha il vantaggio di non creare una copia degli assembly.

    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. Installare i due assembly nella GAC. Da un prompt con privilegi elevati eseguire i comandi seguenti:

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

Problema: WebMatrix Beta 3 non è in grado di eseguire determinate attività che richiedono l'elevazione dei privilegi

WebMatrix Beta 3 non è in grado di eseguire determinate attività che richiedono l'elevazione dei privilegi, ad esempio l'installazione di componenti aggiuntivi nelle situazioni seguenti:

  • In Windows Vista o Windows 7, si è connessi con un account che non dispone di privilegi amministrativi e controllo dell'account utente è disabilitato.
  • Si utilizza Microsoft Windows XP o Microsoft Windows Server 2003.

Soluzione alternativa
La maggior parte delle attività in WebMatrix Beta 3 non richiede l'autorizzazione amministrativa. A tale scopo, è possibile eseguire l'operazione come amministratore o seguire questa procedura:

  • In Windows Vista o Windows 7 abilitare controllo dell'account utente.
  • In Windows XP aggiungere l'utente al gruppo di sicurezza Administrators.

L'opzione Sito da Raccolta Web è disabilitata se il programma di installazione della piattaforma Web 3.0 non è installato.

Soluzione alternativa
Installare il Installazione guidata piattaforma Web Microsoft 3.0.

Problema: in Windows Server 2003 IIS Express non viene avviato per un utente non amministrativo

In Windows Server 2003, quando si avvia una pagina o si avvia IIS Express, IIS Express non viene avviato. Per le pagine Web viene visualizzato un errore che indica che l'applicazione è stata avviata da un utente non amministrativo.

Soluzione alternativa
Avviare WebMatrix Beta 3 come utente amministratore.

Problema: Google Chrome non è disponibile come opzione Esegui

Google Chrome non viene visualizzato nell'elenco dei browser in Esegui nella scheda Home .

Soluzione alternativa
Alcune versioni di Google Chrome non si registrano correttamente con la funzionalità Programmi predefiniti in Windows. Come soluzione alternativa, avvia Google Chrome, fai clic sul menu Personalizza e controlla Google Chrome , fai clic su Opzioni e quindi fai clic su Rendi google Chrome il browser predefinito.

Problema: la finestra di dialogo "Chiave esterna" non consente l'immissione di una chiave primaria

La finestra di dialogo Chiave esterna non consente di immettere il nome della chiave primaria dalla tabella della chiave primaria.

Soluzione alternativa
Si tratta di un comportamento intenzionale. Non è necessario immettere il nome della chiave primaria dalla tabella della chiave primaria.

Problema: il pulsante "Relazioni" è disabilitato

Il pulsante Relazioni nella scheda Tabella dell'area di lavoro Database è disabilitato per i database di SQL Server Compact.

Soluzione alternativa
Nessuno. SQL Server Compact non supporta le relazioni tra le tabelle.

Problema: le query SQL con parametri generano eccezioni

In SQL Server Compact 4.0, se non si specifica un tipo di dati, SqlDbType ad esempio o DbType per i parametri nelle query con parametri, viene generata un'eccezione quando viene eseguita la query.

Soluzione alternativa
Impostare in modo esplicito il tipo di dati per i parametri, ad SqlDbType esempio o DbType. Questo aspetto è fondamentale nel caso dei tipi di dati BLOB (image e ntext). Usare codice simile al seguente:

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

Per Ulteriori Informazioni

Per altre informazioni su WebMatrix Beta 3, vedere i siti Web seguenti: