Share via


Infodatei für das Release WebMatrix und ASP.NET Web Pages (Razor) Beta 3

Infodatei für das Release WebMatrix und ASP.NET Web Pages (Razor) Beta 3

9. November 2010

Inhalte

Überblick

Microsoft WebMatrix Beta ist ein kostenloser Webentwicklungsstapel, der in wenigen Minuten installiert wird. Es integriert einen Webserver in Datenbank- und Programmierframeworks, um eine einheitliche, integrierte Benutzeroberfläche zu erstellen. Sie können WebMatrix Beta verwenden, um das Programmieren, Testen und Veröffentlichen Ihrer eigenen ASP.NET- oder PHP-Website zu optimieren, oder Sie können WebMatrix Beta verwenden, um eine neue Website mit beliebten Open-Source-Apps wie DotNetNuke, Umbraco, WordPress oder Joomla zu starten. WebMatrix Beta verwendet dieselbe leistungsstarke Webserver-, Datenbank-Engine- und Framework-Umgebung, die Ihre Website im Internet ausgeführt, wodurch der Übergang von der Entwicklung zur Produktion reibungslos und nahtlos wird.

Installation

Zum Installieren von WebMatrix Beta 3 verwenden Sie Microsoft-Webplattform-Installer 3.0. Nachdem Sie den Webplattform-Installer installiert haben, können Sie ihn verwenden, um WebMatrix Beta 3 zu installieren.

Wenn während der Installation Probleme auftreten, lesen Sie Problembehandlungsprobleme mit Microsoft-Webplattform-Installer.

Anweisungen zum Veröffentlichen von Anwendungen

Weitere Informationen finden Sie unter Schrittweise Anleitungen zum Veröffentlichen von Anwendungen.

Neue Features, Änderungen und Bekannte Probleme

WebMatrix Beta 3-Installation

Problem: WebMatrix Beta 3 ist nur auf Plattformen verfügbar, die Microsoft .NET Framework 4 unterstützen

Die .NET Framework Version 4 ist für WebMatrix Beta erforderlich. In bestimmten Fällen können Sie mit dem WebMatrix Beta-Installationsprogramm versuchen, auf einer Plattform zu installieren, die nicht Teil des unterstützten Konfigurationssatzes ist. Insbesondere können Sie mit windows Vista ohne SP1-Update mit der Installation von WebMatrix Beta beginnen, aber die .NET Framework 4-Komponente schlägt fehl und blockiert Ihre Installation.

Problemumgehung
Installieren Sie auf einer unterstützten Plattform, die Folgendes umfasst:

  • Windows 7
  • Windows Server 2008
  • Windows Server 2008 R2
  • Windows Vista SP1 oder höher
  • Windows XP SP3
  • Windows Server 2003 SP2

Problem: WebMatrix Beta 3 kann nicht installiert werden, wenn Microsoft Visual Studio 2008 ohne Microsoft Visual Studio 2008 SP1 installiert ist

Problemumgehung
Installieren Sie Microsoft Visual Studio 2008 Service Pack 1 aus dem Microsoft Download Center.

Problem: Einige Assemblys für SQL Server Compact 4.0 sind im GAC nicht installiert.

Die verwalteten Assemblys für SQL Server Compact 4.0 werden nicht im globalen Assemblycache (GAC) platziert, wenn Sie SQL Server Compact 4.0 auf einem 64-Bit-Computer installieren und auf dem Computer nur das .NET Framework 3.5 SP1-Clientprofil installiert ist. Die verwalteten Assemblys, die nicht im GAC installiert sind, sind:

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

Problemumgehung
Deinstallieren Sie SQL Server Compact 4.0. Laden Sie die Vollversion von .NET Framework 3.5 SP1 vom folgenden Speicherort herunter, und installieren Sie sie:

Microsoft .NET Framework 3.5 Service Pack 1 (Full Package)

Installieren Sie dann SQL Server Compact 4.0 neu.

Problem: SQL Server Compact kann nicht über die Befehlszeile deinstalliert werden.

Die Deinstallation von SQL Server Compact mithilfe von Befehlszeilenoptionen funktioniert in dieser Version nicht.

Problemumgehung
Verwenden Sie Programme und Features im Windows-Systemsteuerung, um Microsoft SQL Server Compact 4.0 zu deinstallieren.

ASP.NET Web Pages

In diesem Abschnitt des Dokuments werden neue Features, Änderungen und bekannte Probleme mit der Beta 3-Version von ASP.NET Web Pages mit Razor-Syntax beschrieben.

Neue Features in Beta 3 für ASP.NET Web Pages mit Razor-Syntax

Neu: Die Methode "Html.Raw" rendert uncodiertes Markup

Mit der neuen Html.Raw Methode können Sie HTML-Markup als Markup rendern, anstatt codierte Ausgabe zu rendern. (Standardmäßig codiert ASP.NET Razor Zeichenfolgen, bevor sie gerendert werden.) Die Syntax lautet:

Html.Raw(value)

Das folgende Beispiel veranschaulicht die Verwendung von Html.Raw:

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

Änderungen in Beta 3 für ASP.NET Web Pages mit Razor Syntax

Änderung: "HrefAttribute"-Methode entfernt

Die HrefAttribute -Methode der WebPage -Klasse wurde entfernt. Dieses Hilfsprogramm wurde verwendet, um unsichere Zeichen in URLs zu codieren. Sie ist nicht mehr erforderlich, da ASP.NET Razor Zeichenfolgen automatisch codiert. (Verwenden Sie die neue Html.Raw Methode, um nicht codierte Zeichenfolgen zu rendern.)

Änderung: Syntax für deklarative "@helper"-Hilfsprogramme geändert

In der Beta 3-Version ändert ASP.NET, wie Hilfsprogramme analysiert werden, die mithilfe der @helper Syntax erstellt werden. Im Wesentlichen wird die @helper Syntax jetzt als Codeblock und nicht als Markupblock analysiert, der Code enthalten kann. Daher muss Code im Hilfsprogramm nicht in @{ } Blöcke eingeschlossen werden. Umgekehrt muss Markup innerhalb des Hilfsprogrammes explizit in HTML-Elementen oder in ASP.NET Razor-Tags <text></text> enthalten sein.

Die folgende @helper Syntax funktioniert beispielsweise in der Beta 3-Version:

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

In der Beta 3-Version muss dieses Hilfsprogramm so geändert werden, dass es wie im folgenden Beispiel aussieht:

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

Beachten Sie, dass die @{ } Zeichen um den anfänglichen Code im Hilfsprogramm nicht mehr verwendet werden. Dies liegt daran, dass der Inhalt der Hilfsprogramme standardmäßig als Codeblock behandelt wird. Das Hilfsprogramm rendert Markup, das mit dem öffnenden <a> Tag beginnt. Wenn das Hilfsprogramm nur Text oder Tags rendern muss, <meta> die kein schließende Tag enthalten (z. B. Tags), muss der zu rendernde Inhalt in <text></text> Tags enthalten sein.

Änderung: "WebPageContext.HttpContext" entfernt

Die WebPageContext.HttpContext-Eigenschaft wurde entfernt. Verwenden Sie stattdessen HttpContext.Current. (Die WebPageContext.HttpContext Eigenschaft hat dies einfach umschlossen.)

Änderung: "Facebook"-Hilfsprogramm in neues Paket verschoben

Das Facebook Helferprogramm wurde in die Facebook verschoben. Hilfsbibliothek, die das Facebook Hilfsprogramm und zusätzliche Funktionen enthält. Sie müssen diese Bibliothek als separates Paket installieren, wie unter "Installieren von Hilfsprogrammen mit dem Paket-Manager" im Tutorial Erste Schritte mit ASP.NET Pages beschrieben.

Änderung: Mitgliedschafts-, Rollen- und Sicherheitstypen werden in eine neue Assembly verschoben

Die folgenden Typen wurden in die WebMatrix.WebData Assembly verschoben:

  • ExtendedMembershipProvider
  • SimpleMembershipProvider
  • SimpleRoleProvider
  • WebSecurity

Änderung: "TagBuilder"-Klasse in System.Web.WebPages.dll Assembly verschoben

Die TagBuilder -Klasse wurde in die System.Web.WebPages.dll-Assembly verschoben. Zuvor war dies in einer Assembly, die Teil von ASP.NET MVC war. Diese Änderung bedeutet, dass Sie ASP.NET MVC nicht installieren müssen, um die TagBuilder -Klasse verwenden zu können.

Die -Klasse befindet sich jedoch weiterhin im System.Web.Mvc Namespace. Um die TagBuilder -Klasse zu verwenden (z. B. in einem benutzerdefinierten ASP.NET Razor-Hilfsprogramm), müssen Sie auf den Namespace verweisen (z. B. durch Hinzufügen @using System.Web.Mvc zu Ihrem Code).

Änderung: Die Anforderungsüberprüfungssyntax wurde geändert; "Validation"-Klasse entfernt

Um die Überprüfung für ein einzelnes Feld oder einen Satz von Feldern zu deaktivieren, können Sie in der Beta 3-Version die Validation.Exclude -Methode aufrufen und den Namen der Felder übergeben, die von der Überprüfung ausgeschlossen werden sollen. In der Beta 3-Version ist eine neue Syntax zur Umgehung der Validierung verfügbar. Die Validation in Beta 3 verwendete Methode wurde entfernt.

Hinweis

Wenn Sie die Anforderungsüberprüfung nicht deaktivieren und Benutzer versuchen, HTML-Markup hochzuladen (z. B. mithilfe eines Rich-Text-Editors auf einer Seite), meldet die Website einen Fehler wie Ein potenziell gefährlicher Request.Form-Wert wurde vom Client erkannt , und die Benutzereingabe wird nicht akzeptiert. Wenn Sie die Anforderungsüberprüfung deaktivieren, müssen Sie die Benutzereingabe manuell überprüfen, um sicherzustellen, dass sie kein potenziell gefährliches Markup oder Skript enthält, indem Sie Cross-Site Scripting (XSS) in ASP.NET Core verhindern.

Um die automatische Anforderungsüberprüfung zu deaktivieren, rufen Sie die Request.Unvalidated -Methode auf, und übergeben Sie ihr den Namen des Felds oder eines anderen Postobjekts, für das Sie die Anforderungsüberprüfung umgehen möchten. Sie können diese Methode verwenden, um die Überprüfung für alle Elemente in den FormSammlungen , QueryString, Cookiesund ServerVariables zu umgehen. Die folgenden Beispiele zeigen die Verwendung der Unvalidated -Methode:

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

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

Bekannte Probleme beim ASP.NET Web Pages mit Razor-Syntax

Problem: Unerwartetes Verhalten bei verwendung einer benutzerdefinierten Benutzertabelle für die Mitgliedschaft

Um den Mitgliedschaftsanbieter für eine ASP.NET Razor-Website zu initialisieren, rufen Sie die -Methode auf WebSecurity.InitializeDatabaseConnection . (In WebMatrix enthält die Starterwebsitevorlage einen Aufruf dieser Methode in der Datei _AppStart.cshtml .) Wenn der autoCreateTables Parameter dieser Methode auf true festgelegt ist (standardmäßig ist er in der Vorlage "Starter Site" auf true festgelegt), und wenn ein nicht erkannter Tabellenname an die -Methode übergeben wird (der zweite Parameter), löst die Methode keinen Fehler aus. Stattdessen wird die Tabelle automatisch erstellt.

Dies kann ein Problem sein, wenn Sie eine benutzerdefinierte Benutzertabelle für die Mitgliedschaft verwenden möchten, aber den falschen Tabellennamen an die WebSecurity.InitializeDatabaseConnection -Methode übergeben. Da die Methode standardmäßig keinen Fehler auslöst, wenn die von Ihnen angegebene Tabelle nicht vorhanden ist und stattdessen eine neue Tabelle erstellt wird, kann die Anwendung scheinbar funktionieren. Bei Anwendungscode, der von Ihrer benutzerdefinierten Benutzertabelle (und den darin enthaltenen Feldern) abhängig ist, kann es jedoch zu einem Fehler mit unerwarteten Fehlern führen.

Problemumgehung
Stellen Sie sicher, dass der in der InitializeDatabaseConnection -Methode übergebene Name mit der Benutzerprofiltabelle in der Mitgliedschaftsdatenbank übereinstimmt, oder stellen Sie sicher, dass der autoCreateTables Parameter auf false festgelegt ist.

Problem: Fehler beim Generieren eines instance SQL Server eines Benutzers

Wenn eine WebMatrix-Webanwendung SQL Server Express verwendet und IIS 7.5 unter Windows 7 oder Windows Server 2008 R2 ausführt, wird möglicherweise ein Fehler angezeigt, der angibt, dass SQL Server den lokalen Anwendungspfad des Benutzers nicht zur Laufzeit abrufen kann.

Problemumgehung Stellen Sie sicher, dass das Windows-Konto, unter dem die Anwendung ausgeführt wird (in der Regel NETWORK SERVICE), über Lese-/Schreibberechtigungen für Stammordner der Anwendung und für Unterordner wie App_Data verfügt. Ausführlichere Informationen finden Sie unter Probleme mit SQL Server Express Benutzerinstancing und ASP.net Webanwendungsprojekten.

Problem: In Visual Studio werden Namespaces für benutzerdefinierte Assemblys (DLLs) nicht automatisch importiert.

Wenn Sie benutzerdefinierte Assemblys in einem Projekt in Visual Studio verwenden, werden die in diesen Assemblys deklarierten Namespaces nicht automatisch zur Entwurfszeit importiert. Daher werden Verweise auf benutzerdefinierte Typen möglicherweise zur Entwurfszeit nicht erkannt und in Visual Studio als nicht erkannt markiert (mit einer "Wellenlinie"). Dieses Problem tritt nur zur Entwurfszeit in Visual Studio auf. die Anwendung selbst wird ordnungsgemäß ausgeführt.

Problemumgehung
Schließen Sie eine using -Anweisung (imports in Visual Basic) ein, die auf die Entitäten verweist, die zur Entwurfszeit nicht erkannt werden.

Problem: Visual Studio IntelliSense und Projektvorlagen, die nur in ASP.NET MVC Version 3 verfügbar sind

Bei der Installation ASP.NET Web Pages werden nicht auch Tools für Visual Studio wie IntelliSense und Projektvorlagen für ASP.NET Web Pages Anwendungen installiert.

Problemumgehung Um IntelliSense und Projektvorlagen für ASP.NET Web Pages Anwendungen in Visual Studio zu verwenden, installieren Sie ASP.NET MVC 3 RC entweder über den Webplattform-Installer oder das eigenständige Installationsprogramm.

Problem: Fehler "<Hilfsklasse> kann nicht gefunden werden"

Nach dem Upgrade auf Beta 3 wird möglicherweise ein Fehler angezeigt, dass eine Hilfsklasse (z. B. die Facebook -Klasse) nicht gefunden werden kann. Ab Beta 2 und weiter in Beta 3 wurden Hilfsprogramme in Pakete verschoben, die Sie explizit installieren müssen. Vorhandene Websites werden nicht auf diese Pakete aktualisiert. Dies schließt Websites in den Ordnern \Eigene Dokumente\IISExpress oder \Eigene Dokumente\Meine Websites ein . Insbesondere wird dieser Fehler angezeigt, wenn Sie die Standardwebsite unter Meine Websites (WebSite1) verwenden, die einen Verweis auf das Twitter Hilfsprogramm enthält.

Problemumgehung
Kommentieren Sie Aufrufe von Hilfsprogrammen auf der Website, führen Sie die _Admin Seite aus, und installieren Sie das Paket oder die Pakete, die die Hilfsprogramme enthalten, die Sie verwenden möchten. Nachdem Sie das Paket installiert haben, können Sie die Auskommentierung der Zeilen aufheben, die auf Hilfsprogramme verweisen.

Problem: Die Bereitstellung von Beta 3-ASP.NET Razor-Assemblys im Ordner Bin funktioniert möglicherweise nicht auf Hostingwebsites.

Wenn Sie eine ASP.NET Web Pages Website auf einer Hostingwebsite bereitstellen und die ASP.NET Razor Beta 3-Assemblys im Ordner Bin der Website bereitstellen, treten möglicherweise Folgende Fehler auf:

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

Dies kann passieren, wenn der Hostinganbieter die ASP.NET Web Pages Beta 1-Assemblys im globalen Anwendungscache (GAC) des Servers installiert hat. Assemblys im GAC erhalten Vorrang vor Assemblys, die lokal im Ordner Bin installiert sind.

Problemumgehung Wenden Sie sich an Ihren Hostinganbieter, um zu bestätigen, dass die angezeigten Fehler auf einen Konflikt zwischen den Versionen der Assemblys des Anbieters und Ihrer zurückzuführen sind. Fordern Sie in diesem Fall an, dass der Hostinganbieter die Assemblys im GAC des Servers aktualisiert.

Problem: Lesen von Feeds oder anderen externen Daten über einen Proxyserver

Wenn sich der Server, auf dem der Standort ausgeführt wird, hinter einem Proxyserver befindet, müssen Sie möglicherweise Proxyinformationen in der Web.config-Datei konfigurieren, um Informationen von außerhalb Ihres Standorts lesen zu können. Wenn Sie beispielsweise das ReCaptcha Hilfsprogramm verwenden, kommuniziert das Hilfsprogramm mit dem reCAPTCHA-Dienst, wird aber möglicherweise von Ihrem Proxyserver blockiert. Ebenso erfordern Feeds, die in ASP.NET Web Pages verwendet werden, z. B. der vom Paket-Manager verwendete Feed, möglicherweise eine Proxykonfiguration.

Wenn beim Arbeiten mit einem externen Dienst oder beim Arbeiten mit dem Paketfeed Probleme auftreten, fügen Sie die folgenden Elemente in die Web.config-Stammdatei Ihrer Anwendung ein:

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

Weitere Informationen zum Konfigurieren eines Proxyservers finden Sie auf der MSDN-Website unter <Proxyelement> (Netzwerkeinstellungen).

Problem: Fehler "Microsoft.Web.Infrastructure.dll kann nicht geladen werden"

Wenn Sie zuvor die Beta 1-Version von ASP.NET Web Pages mit Razor-Syntax installiert haben und dann die Beta 3-Version installieren, werden alle entsprechenden Assemblys im GAC mit Ausnahme vonMicrosoft.Web.Infrastructure.dllinstalliert. Daher wird beim Ausführen ASP.NET Razor-Seiten ein Fehler angezeigt, der darauf hinweist, dass Microsoft.Web.Infrastructure.dll nicht geladen werden konnte.

Dieses Problem tritt nicht auf, wenn Sie die Beta 3-Version auf einen sauber Computer geladen haben.

Problemumgehung
Deinstallieren Sie in Systemsteuerung ASP.NET Web Pages. Installieren Sie dann die Beta 3-Version neu.

Problem: Beim Deinstallieren der .NET Framework Version 4 wird ASP.NET Web Pages mit Razor Syntax deaktiviert.

Wenn Sie die .NET Framework Version 4 deinstallieren und dann erneut installieren, ist ASP.NET Web Pages mit Razor-Syntax deaktiviert. Seiten mit der Erweiterung .cshtml werden nicht ordnungsgemäß ausgeführt. ASP.NET Web Pages registriert eine Assembly in der Computerstammdatei Web.config, und durch Entfernen des .NET Framework wird diese Datei entfernt. Wenn Sie die .NET Framework neu installieren, wird eine neue Version der Konfigurationsdatei installiert, aber nicht der Verweis für die ASP.NET Web Pages-Assembly hinzugefügt.

Problemumgehung Nachdem Sie die .NET Framework neu installiert haben, installieren Sie ASP.NET Web Pages mit Razor-Syntax neu. Dadurch wird das folgende Element der Web.config-Datei im Computerstamm hinzugefügt, die sich in der Regel am folgenden Speicherort befindet:

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>

Problem: Bei Anwendungen, die zuvor mit ASP.NET Assemblys im Ordner Bin bereitgestellt wurden, treten Fehler auf.

Während der Bereitstellung werden Kopien der ASP.NET Web Pages Assemblys (z. B.Microsoft.WebPages.dll) in den Ordner Bin der Website auf dem Server kopiert. (Dies ist möglicherweise automatisch während der Bereitstellung aufgetreten oder weil der Entwickler die Assemblys explizit kopiert hat.) Wenn die Beta 3-Version installiert ist, treten jedoch Fehler auf, z. B. Fehler, die bestimmte Typen nicht gefunden werden können. Dies tritt auf, weil eine Reihe von ASP.NET Web Pages Typen für die Beta 3-Version in verschiedene Namespaces verschoben wurden.

Problemumgehung
Löschen Sie den Ordner Bin der bereitgestellten Anwendung, kopieren Sie die neuen Assemblys in den Ordner (oder stellen Sie die Anwendung erneut bereit), und starten Sie dann die Anwendung neu.

Problem: Erweiterungslose URLs finden keine CSHTML/.vbhtml-Dateien in IIS 7 oder IIS 7.5

In IIS 7 oder IIS 7.5 können Anforderungen mit einer URL wie der folgenden keine Seiten mit der Erweiterung CSHTML oder VBHTML finden:

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

Das Problem tritt auf, weil das Umschreiben von URL für IIS 7 oder IIS 7.5 standardmäßig nicht aktiviert ist. Das wahrscheinlichste Szenario besteht darin, dass das Problem beim lokalen Testen mit IIS Express nicht angezeigt wird, sondern dass es auftritt, wenn Sie Ihre Website auf einer Hostingwebsite bereitstellen.

Problemumgehung

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

Problem: Verwenden von Webanwendungsprojekt oder ASP.NET MVC und ASP.NET Webseiten in derselben Anwendung

Wenn Sie ASP.NET Web Pages in einem Webanwendungsprojekt oder ASP.NET MVC-Anwendung verwendet haben, wird möglicherweise ein Fehler angezeigt, dass WebPageHttpApplication nicht gefunden werden kann.

Problemumgehung
Wenn sie diesen Fehler erhalten, ändern Sie die Basisklasse, von der die Anwendung abgeleitet wird. Ändern Sie in der Datei Global.asax die folgende Zeile:

public class MvcApplication :  WebPageHttpApplication { ... }

Folgendermaßen:

public class MvcApplication :  HttpApplication { ... }

Dadurch wird eine Änderung rückgängig gemacht, die für die Beta 1-Version von ASP.NET Web Pages mit Razor-Syntax eingeführt wurde.

Problem: Bereitstellen einer Anwendung auf einem Computer, auf dem SQL Server Compact nicht installiert ist

Anwendungen, die SQL Server Compact Datenbanken enthalten, können auf einem Computer ausgeführt werden, auf dem SQL Server Compact nicht installiert ist. Microsoft WebMatrix Beta 3 kopiert diese Binärdateien automatisch für Sie und führt die entsprechenden Web.config Dateitransformationen aus.

Problemumgehung Wenn Sie diese Dateien kopieren und die Web.config Dateiänderungen manuell vornehmen müssen, gehen Sie wie folgt vor:

  1. Kopieren Sie die Assemblys der Datenbank-Engine in den Ordner Bin (und Unterordner) der Anwendung auf dem Zielcomputer:

    • Kopieren Sie C:\Programme\Microsoft SQL Server Compact Edition\v4.0\Desktop\System.Data.SqlServerCe.dllin\Bin
    • Kopieren Sie C:\Programme\Microsoft SQL Server Compact Edition\v4.0\Private\x86\* to\Bin\x86
    • Kopieren Sie C:\Programme\Microsoft SQL Server Compact Edition\v4.0\Private\amd64\* to\Bin\amd64
  2. Erstellen oder öffnen Sie im Stammordner der Website eine Web.config-Datei . (In WebMatrix Beta 3 ist dieser Dateityp verfügbar, wenn Sie im Dialogfeld Dateityp auswählen auf Alle klicken.)

  3. Fügen Sie das folgende Element als untergeordnetes Element des <Konfigurationselements> hinzu (nicht innerhalb des <system.web-Elements> ):

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

Problem: Datenbank- und WebGrid-Hilfsprogramme funktionieren nicht in Medium Trust in Visual Basic

Wenn Sie Visual Basic (erstellen von VBHTML-Dateien ) verwenden, funktionieren die Database Hilfsprogramme und WebGrid nicht, wenn die Anwendung auf Medium Trust festgelegt ist.

Problemumgehung
Legen Sie vorübergehend fest, dass die Anwendung voll vertrauenswürdig ist.

SQL Server Compact

Problem: Eigenschaft "Encrypt" wird nicht erkannt

SQL Server Compact 4.0 erkennt die Encrypt Eigenschaft der SqlCeConnection Klasse nicht. Sie sollten diese Eigenschaft nicht zum Verschlüsseln von Datenbankdateien verwenden. Die Encrypt Eigenschaft war in SQL Server Compact Version 3.5 veraltet und wurde nur aus Gründen der Abwärtskompatibilität beibehalten.

Problemumgehung
Verwenden Sie die Encryption Mode -Eigenschaft der SqlCeConnection -Klasse, um SQL Server Compact 4.0-Datenbankdateien zu verschlüsseln. Das folgende Beispiel zeigt, wie Sie mithilfe der Encryption Mode -Eigenschaft eine verschlüsselte SQL Server Compact 4.0-Datenbank erstellen:

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

Gehen Sie wie folgt vor, um den Verschlüsselungsmodus einer vorhandenen SQL Server Compact 4.0-Datenbank zu ändern:

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

Gehen Sie wie folgt vor, um eine unverschlüsselte SQL Server Compact 4.0-Datenbank zu verschlüsseln:

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

Problem: Microsoft Visual C++ 2008-Laufzeitbibliotheken sind erforderlich

Die nativen DLLs von SQL Server Compact 4.0 benötigen die Microsoft Visual C++ 2008 Runtime Libraries (x86, IA64 und x64), Service Pack 1.

Problemumgehung
Installieren Sie die .NET Framework 3.5 SP1. Dadurch werden auch die Visual C++ 2008-Runtimebibliotheken SP1 installiert. Sie können die Bibliotheken am folgenden Speicherort herunterladen:

Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package ATL Sicherheitsupdate

Hinweis

Beachten Sie, dass bei der Installation der .NET Framework 2.0, 3.0 oder 4 die Visual C++ 2008 Runtime Libraries SP1 nicht installiert werden.

Problem: Wenn SQL Server Compact vor der Installation .NET Framework auf dem Computer installiert ist, ist der anbieterinvariante Name nicht in der .NET Framework machine.config-Datei registriert.

SQL Server Compact kann auf einem Computer installiert werden, auf dem .NET Framework nicht installiert ist, da SQL Server Compact das .NET Framework erfordert. Wenn weder .NET Framework Version 3.5 noch 4 installiert ist, bevor Sie SQL Server Compact installieren, registriert das SQL Server Compact Setup seinen anbieterinvarianten Namen nicht in der machine.config-Datei. Jede Anwendung, die auf dem eintrag SQL Server Compact in der machine.config datei basiert, schlägt fehl. Der Registrierungseintrag für invariante Namen in machine.config sieht wie im folgenden Beispiel aus:

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

Problemumgehung
Deinstallieren Sie SQL Server Compact 4.0 CTP1. Laden Sie die Vollversionen des .NET Framework vom folgenden Speicherort herunter, und installieren Sie sie:

Microsoft .NET Framework 3.5 Service Pack 1 (Full Package)
Microsoft .NET Framework 4.0 Release (Vollständiges Paket)

Installieren Sie dann SQL Server Compact 4.0 SP1 neu.

Installieren von Anwendungen

Problem: Die Installation einer Anwendung kann lange dauern, wenn der Ordner "Eigene Dokumente" des Benutzers an eine Netzwerkfreigabe umgeleitet wird.

Problemumgehung
Keine. Die Installation der Anwendung kann eine Weile dauern, wird aber ordnungsgemäß installiert.

Veröffentlichungsanwendungen

Problem: Die Website funktioniert nach der Veröffentlichung möglicherweise nicht, wenn dem Feld "Ziel-URL" nicht http:// oder https://

Wenn die Ziel-URL im Dialogfeld Veröffentlichungseinstellungen nicht mit http:// oder https://beginnt, funktioniert die Website nach der Bereitstellung möglicherweise nicht mehr.

Problemumgehung
Stellen Sie sicher, dass die Ziel-URL im Dialogfeld Veröffentlichungseinstellungen mit http:// oder https://beginnt, bevor Sie eine Website veröffentlichen.

Problem: Beim Veröffentlichen einer MySQL-Datenbank tritt der Fehler "Fehler beim Veröffentlichen der Datenbank. Dies kann passieren, wenn die Remotedatenbank das Skript nicht ausführen kann."

Der Fehler kann aus verschiedenen Gründen auftreten. Ein Grund, warum dieser Fehler angezeigt wird, ist, wenn das Datenbankskript ein einzelnes Anführungszeichen (') enthält und der Standardzeichensatz der Ziel-MySQL-Datenbank nicht AUF UTF-8 lautet.

Problemumgehung
Legen Sie den Standardzeichensatz für die MySQL-Remotedatenbank auf UTF-8 fest.

Andere Probleme

Problem: Suchen/Filtern funktioniert nicht in Berichten für Gruppen nach: Problemtyp

Wenn Sie einen Bericht für eine Website ausführen, geschieht nichts, wenn Sie Text in das Feld Nach URL filtern eingeben und auf Suchen klicken. Dies liegt daran, dass dieses Steuerelement nicht funktionsfähig ist, während der Status "Gruppieren nach " des Berichts auf "Problemtyp" festgelegt ist, was der Standard ist.

Problemumgehung Klicken Sie auf der Registerkarte Gruppieren nach des Menübands auf URL , um die Einträge nach ihrer Quell-URL zu gruppieren. Das Textfeld und die Schaltfläche zum Filtern der Einträge sind in diesem Zustand funktionsfähig.

Problem: WCF-Anwendungen können nicht mit IIS Express ausgeführt werden.

Das Navigieren zu einer WCF-Anwendung führt zu einem Fehler wie dem folgenden:

Die Datei oder Assembly "Microsoft.Web.Administration, Version=7.0.0.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35" oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Die angegebene Datei wurde nicht gefunden.

Dies tritt auf, weil IIS Express Betaversion WCF standardmäßig nicht unterstützt.

Problemumgehung Verwenden Sie eine der folgenden Problemumgehungen (Problemumgehung #2 erfordert Microsoft Windows Vista oder höher):

  1. Kopieren Sie die assemblysMicrosoft.Web.dll und Microsoft.Web.Administration.dll vom WebMatrix-Installationsspeicherort in das Verzeichnis bin der WCF-Anwendung. Standardmäßig wird WebMatrix im Unterordner Microsoft WebMatrix unter dem Ordner Programme des Systems installiert.

  2. Erstellen Sie unter Microsoft Windows Vista oder höher mithilfe der folgenden Befehle einen Symlink zu den Assemblys im Verzeichnis bin . (Dieser Ansatz hat den Vorteil, dass keine Kopie der Assemblys erstellt wird.)

    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. Installieren Sie die beiden Assemblys im GAC. Führen Sie an einer Eingabeaufforderung mit erhöhten Rechten die folgenden Befehle aus:

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

Problem: WebMatrix Beta 3 kann bestimmte Aufgaben, die eine Erhöhung erfordern, nicht ausführen.

WebMatrix Beta 3 kann bestimmte Aufgaben, die eine Erhöhung erfordern, nicht ausführen, z. B. die Installation zusätzlicher Komponenten in den folgenden Situationen:

  • Unter Windows Vista oder Windows 7 sind Sie mit einem Konto ohne Administratorrechte angemeldet, und die Benutzerkontensteuerung (User Account Control, UAC) ist deaktiviert.
  • Sie verwenden Microsoft Windows XP oder Microsoft Windows Server 2003.

Problemumgehung
Für die meisten Aufgaben in WebMatrix Beta 3 ist keine Administratorberechtigung erforderlich. Für diejenigen, die dies tun, können Sie den Vorgang als Administrator ausführen, oder führen Sie die folgenden Schritte aus:

  • Aktivieren Sie unter Windows Vista oder Windows 7 UAC.
  • Fügen Sie unter Windows XP den Benutzer der Sicherheitsgruppe Administratoren hinzu.

Die Option Website aus Webkatalog ist deaktiviert, wenn der Webplattform-Installer 3.0 nicht installiert ist.

Problemumgehung
Installieren Sie die Microsoft-Webplattform-Installer 3.0.

Problem: Unter Windows Server 2003 wird IIS Express für einen nicht administrativen Benutzer nicht gestartet.

Wenn Sie unter Windows Server 2003 eine Seite starten oder IIS Express starten, wird IIS Express nicht gestartet. Für Webseiten wird ein Fehler angezeigt, der angibt, dass die Anwendung von einem nicht administrativen Benutzer gestartet wurde.

Problemumgehung
Starten Sie WebMatrix Beta 3 als Administrator.

Problem: Google Chrome ist nicht als Ausführungsoption verfügbar.

Google Chrome wird in der Liste der Browser unter Ausführen auf der Registerkarte Start nicht angezeigt.

Problemumgehung
Einige Versionen von Google Chrome registrieren sich nicht ordnungsgemäß mit der Standardprogrammfunktion in Windows. Als Problemumgehung starten Sie Google Chrome, klicken Sie auf das Menü Google Chrome anpassen und steuern , klicken Sie auf Optionen, und klicken Sie dann auf Google Chrome als Standardbrowser festlegen.

Problem: Das Dialogfeld "Fremdschlüssel" lässt die Eingabe eines Primärschlüssels nicht zu.

Im Dialogfeld Fremdschlüssel können Sie den Namen des Primärschlüssels aus der Primärschlüsseltabelle nicht eingeben.

Problemumgehung
Dies ist beabsichtigt. Sie müssen den Namen des Primärschlüssels nicht aus der Primärschlüsseltabelle eingeben.

Problem: Die Schaltfläche "Beziehungen" ist deaktiviert.

Die Schaltfläche Beziehungen auf der Registerkarte Tabelle im Arbeitsbereich Datenbanken ist für SQL Server Compact Datenbanken deaktiviert.

Problemumgehung
Keine. SQL Server Compact unterstützt keine Beziehungen zwischen Tabellen.

Problem: Parametrisierte SQL-Abfragen lösen Ausnahmen aus.

Wenn Sie in SQL Server Compact 4.0 keinen Datentyp wie SqlDbType oder DbType für Parameter in parametrisierten Abfragen angeben, wird beim Ausführen der Abfrage eine Ausnahme ausgelöst.

Problemumgehung
Legen Sie den Datentyp für Parameter wie SqlDbType oder DbTypeexplizit fest. Dies ist im Fall von BLOB-Datentypen (image und ntext) von entscheidender Bedeutung. Verwenden Sie Code wie den folgenden:

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

Weitere Informationen

Weitere Informationen zu WebMatrix Beta 3 finden Sie auf den folgenden Websites: