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
Contents
Übersicht
Microsoft WebMatrix Beta ist ein kostenloser Webentwicklungsstapel, der in Minuten installiert wird. Er integriert einen Webserver in Datenbank- und Programmierframeworks, um eine einzige integrierte Oberfläche zu erstellen. Sie können WebMatrix Beta verwenden, um die Art und Weise zu optimieren, wie Sie Ihre eigene ASP.NET- oder PHP-Website codieren, testen und veröffentlichen, 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-, Datenbankmodul- und Framework-Umgebung, die Ihre Website im Internet ausführt, wodurch der Übergang von der Entwicklung zur Produktion reibungslos und nahtlos wird.
Installation
Hinweis
WebMatrix wird nicht mehr als integrierte Entwicklungsumgebung für ASP.NET Webseiten empfohlen. Verwenden Sie Visual Studio oder Visual Studio Code.
Wenn während der Installation Probleme auftreten, lesen Sie die Problembehandlung bei Microsoft-Webplattform Installer.
Anweisungen für die Veröffentlichung von Anwendungen
Schrittweise Anleitungen für die Veröffentlichung von Anwendungen
Neue Features, Änderungen und Probleme mit DemKnown
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 das SP1-Update die Installation von WebMatrix Beta starten, die .NET Framework 4-Komponente schlägt jedoch fehl und blockiert die Installation.
Problemumgehung
Installation 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 nicht im GAC 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 der Computer nur das .NET Framework 3.5 SP1-Clientprofil installiert hat. 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 von folgendem Speicherort herunter, und installieren Sie sie:Microsoft .NET Framework 3.5 Service Pack 1 (Vollständiges Paket)
Installieren Sie dann SQL Server Compact 4.0 erneut.
Problem: SQL Server Compact kann nicht mithilfe der Befehlszeile deinstalliert werden.
Die Deinstallation von SQL Server Compact mithilfe von Befehlszeilenoptionen funktioniert in dieser Version nicht.
Problemumgehung
Verwenden Sie Programme und Features in windows Systemsteuerung, um Microsoft SQL Server Compact 4.0 zu deinstallieren.
ASP.NET-Webseiten 2
In diesem Abschnitt des Dokuments werden neue Features, Änderungen und bekannte Probleme mit der Beta 3-Version von ASP.NET Webseiten mit Razor-Syntax beschrieben.
Neue Features in Beta 3 für ASP.NET Webseiten mit Razor-Syntax
Neu: Die Methode "Html.Raw" rendert nicht codiertes Markup.
Mit der neuen
Html.Raw
Methode können Sie HTML-Markup als Markup rendern, anstatt die codierte Ausgabe zu rendern. (Standardmäßig codiert ASP.NET Razor Zeichenfolgen, bevor sie gerendert werden.) Die Syntax lautet:
Html.Raw(value)
Das folgende Beispiel zeigt 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 Webseiten mit Razor-Syntax
Änderung: "HrefAttribute"-Methode entfernt
Die
HrefAttribute
Methode derWebPage
Klasse wurde entfernt. Dieses Hilfsprogramm wurde verwendet, um unsichere Zeichen in URLs zu codieren. Sie ist nicht mehr erforderlich, da ASP.NET Razor automatisch Zeichenfolgen codiert. (Verwenden Sie die neueHtml.Raw
Methode, um nicht codierte Zeichenfolgen zu rendern.)
Änderung: Syntax für deklarative Hilfsprogramme "@helper" geändert
In der Beta 3-Version ASP.NET ändert, wie Hilfsprogramme analysiert werden, die mithilfe der
@helper
Syntax erstellt werden. Im Wesentlichen wird die@helper
Syntax nun als Codeblock und nicht als Markupblock analysiert, der Code enthalten kann. Daher müssen Code innerhalb des Hilfsprogramms nicht in@{ }
Blöcke eingeschlossen werden. Umgekehrt muss Markup innerhalb des Hilfselements explizit in HTML-Elemente 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ßender 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 stattdessenHttpContext.Current
. (DieWebPageContext.HttpContext
Eigenschaft hat dies einfach umschlossen.)
Änderung: "Facebook"-Hilfsprogramm in ein neues Paket verschoben
Der
Änderung: Mitgliedschafts-, Rollen- und Sicherheitstypen werden in neue Assembly verschoben.
Die folgenden Typen wurden in die
WebMatrix.WebData
Assembly verschoben:
ExtendedMembershipProvider
SimpleMembershipProvider
SimpleRoleProvider
WebSecurity
Änderung: Die Klasse "TagBuilder" wurde in System.Web.WebPages.dll Assembly verschoben.
Die
TagBuilder
Klasse wurde in die System.Web.WebPages.dll-Assembly verschoben. Zuvor befand sich dies in einer Assembly, die Teil ASP.NET MVC war. Diese Änderung bedeutet, dass Sie ASP.NET MVC nicht installieren müssen, um dieTagBuilder
Klasse zu verwenden.Die Klasse befindet sich jedoch noch im
System.Web.Mvc
Namespace. Um dieTagBuilder
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
zum Code).
Änderung: Anforderungsüberprüfungssyntax geändert; Die Klasse "Validation" wurde entfernt.
In der Beta 3-Version können Sie die Überprüfung für ein einzelnes Feld oder eine Gruppe von Feldern deaktivieren, indem Sie die
Validation.Exclude
Methode aufrufen, indem Sie den Namen oder die Namen der Felder übergeben, die von der Überprüfung ausgeschlossen werden sollen. Eine neue Syntax steht in der Beta 3-Version zur Umgehung der Überprüfung zur Verfügung. DieValidation
in Beta 3 verwendete Methode wurde entfernt.Hinweis
Wenn Sie die Anforderungsüberprüfung nicht deaktivieren, wenn 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 sie an den Namen des Felds oder eines anderen Postobjekts, für das Sie die Anforderungsüberprüfung umgehen möchten. Mit dieser Methode können Sie die Überprüfung für alle Elemente in denForm
,QueryString
, undCookies
ServerVariables
Sammlungen umgehen. Die folgenden Beispiele zeigen, wie dieUnvalidated
Methode verwendet wird: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 für ASP.NET Webseiten 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
WebSecurity.InitializeDatabaseConnection
Methode auf. (In WebMatrix enthält die Startwebsitevorlage einen Aufruf dieser Methode in der Datei _AppStart.cshtml .) Wenn derautoCreateTables
Parameter dieser Methode auf "true" festgelegt ist (standardmäßig wird er in der Vorlage "Startwebsite" auf "true" festgelegt), und wenn ein nicht erkannter Tabellenname an die Methode (der zweite Parameter) übergeben wird, 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 ausgelöst hat, wenn die angegebene Tabelle nicht vorhanden ist, und da sie stattdessen eine neue Tabelle erstellt, kann die Anwendung scheinbar funktionieren. Anwendungscode, der auf der benutzerdefinierten Benutzertabelle (und auf Feldern in der Tabelle) basiert, kann jedoch zu unerwarteten Fehlern führen.Problemumgehung
Stellen Sie sicher, dass der in derInitializeDatabaseConnection
Methode übergebene Name der Benutzerprofiltabelle in der Mitgliedschaftsdatenbank entspricht, oder stellen Sie sicher, dass derautoCreateTables
Parameter auf "false" festgelegt ist.
Problem: Fehler "Fehler beim Generieren einer Benutzerinstanz von SQL Server"
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 zur Laufzeit nicht 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 Problemen 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 zur Entwurfszeit nicht automatisch importiert. Daher werden Verweise auf benutzerdefinierte Typen möglicherweise zur Entwurfszeit nicht erkannt und in Visual Studio als nicht erkannt (mit einem "Wellenstrich") gekennzeichnet. Dieses Problem tritt nur zur Entwurfszeit in Visual Studio auf; die Anwendung selbst wird ordnungsgemäß ausgeführt.
Problemumgehung
Schließen Sie eineusing
Anweisung (imports
in Visual Basic) ein, die auf die Entitäten verweist, die zur Entwurfszeit nicht erkannt werden.
Problem: Visual Studio IntelliSense und Projektvorlagen nur in ASP.NET MVC Version 3 verfügbar
Beim Installieren von ASP.NET Webseiten werden nicht auch Tools für Visual Studio wie IntelliSense und Projektvorlagen für ASP.NET Webanwendungen installiert.
Problemumgehung Zum Verwenden von IntelliSense- und Projektvorlagen für ASP.NET Webanwendungen in Visual Studio 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
Problemumgehung
Kommentieren Sie Aufrufe an alle Helfer auf der Website aus, 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 Kommentare der Zeilen aufheben, die auf Hilfsprogramme verweisen.
Problem: Das Bereitstellen von Beta 3 ASP.NET Razor-Assemblys im Ordner "Bin" funktioniert möglicherweise nicht auf Hostingwebsites.
Wenn Sie eine ASP.NET Webseite auf einer Hostingwebsite bereitstellen und die ASP.NET Razor Beta 3-Assemblys im Ordner "Bin" der Website bereitstellen, treten möglicherweise Fehler auf, einschließlich der folgenden:
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 haben 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. Falls ja, fordern Sie 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 Datei "Web.config " konfigurieren, um Informationen lesen zu können, die von außerhalb Ihrer Website stammen. Wenn Sie z. B. das
ReCaptcha
Hilfsprogramm verwenden, kommuniziert der Hilfsdienst mit dem reCAPTCHA-Dienst, kann aber vom Proxyserver blockiert werden. Ebenso erfordern Feeds, die in ASP.NET Webseiten verwendet werden, z. B. den vom Paket-Manager verwendeten Feed, 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 Stammdatei "Web.config " Ihrer Anwendung ein:
<system.net> <defaultProxy> <proxy autoDetect="False" proxyaddress="[proxy URL]"/> </defaultProxy> </system.net>
Weitere Informationen zum Konfigurieren eines Proxyservers finden Sie unter <Proxyelement> (Netzwerkeinstellungen) auf der MSDN-Website.
Problem: Fehler "Microsoft.Web.Infrastructure.dll kann nicht geladen werden"
Wenn Sie zuvor die Beta 1-Version von ASP.NET Webseiten mit Razor-Syntax installiert und dann die Beta 3-Version installieren, werden alle entsprechenden Assemblys im GAC installiert, mit Ausnahme von Microsoft.Web.Infrastructure.dll. Wenn Sie ASP.NET Razor-Seiten ausführen, wird ein Fehler angezeigt, der angibt, dass Microsoft.Web.Infrastructure.dll nicht geladen werden konnten.
Dieses Problem tritt nicht auf, wenn Sie die Beta 3-Version auf einem sauberen Computer geladen haben.
Problemumgehung
Deinstallieren Sie in Systemsteuerung ASP.NET Webseiten. Installieren Sie dann die Beta 3-Version erneut.
Problem: Durch die Deinstallation von .NET Framework, Version 4, werden ASP.NET Webseiten mit Razor-Syntax deaktiviert.
Wenn Sie .NET Framework, Version 4, deinstallieren und dann erneut installieren, ist ASP.NET Webseiten mit Razor-Syntax deaktiviert. Seiten mit der Erweiterung CSHTML werden nicht ordnungsgemäß ausgeführt. ASP.NET Webseiten registriert eine Assembly in der Datei "Machine Root Web.config ", und das Entfernen von .NET Framework entfernt diese Datei. Durch erneutes Installieren von .NET Framework wird eine neue Version der Konfigurationsdatei installiert, aber der Verweis für die Assembly ASP.NET Webseiten wird nicht hinzugefügt.
Problemumgehung Nach der Neuinstallation von .NET Framework installieren Sie ASP.NET Webseiten mit Razor-Syntax erneut. Dadurch wird der Datei "Web.config " im Computerstamm das folgende Element hinzugefügt, das 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: Anwendungen, die zuvor mit ASP.NET Assemblys im Ordner "Bin" bereitgestellt wurden, treten Fehler auf
Während der Bereitstellung werden Kopien der ASP.NET Webseitenassemblys (z . B. Microsoft.WebPages.dll) in den Ordner "Bin " der Website auf dem Server kopiert. (Dies ist möglicherweise während der Bereitstellung automatisch geschehen 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, da eine Reihe von ASP.NET Webseitentypen in verschiedene Namespaces für die Beta 3-Version 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 die Anwendung dann 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, da die URL-Neuschreibung für IIS 7 oder IIS 7.5 nicht standardmäßig aktiviert ist. Das am besten mögliche Szenario besteht darin, dass das Problem beim lokalen Testen mithilfe von IIS Express nicht angezeigt wird, sie aber beim Bereitstellen Ihrer Website auf einer Hostingwebsite auftritt.
Problemumgehung
- Wenn Sie die Kontrolle über den Servercomputer haben, installieren Sie auf dem Servercomputer das in einem Update beschriebene Update, das bestimmte IIS 7.0- oder IIS 7.5-Handler zum Verarbeiten von Anforderungen ermöglicht, deren URLs nicht mit einem Punkt enden.
- Wenn Sie keine Kontrolle über den Servercomputer haben (z. B. auf einer Hostingwebsite bereitstellen), fügen Sie der Datei "Web.config" der Website Folgendes hinzu:
<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 Webseiten in einem Webanwendungsprojekt oder ASP.NET MVC-Anwendung verwendet haben, wird möglicherweise ein Fehler angezeigt, der von WebPageHttpApplication nicht gefunden werden kann.
Problemumgehung
Wenn dieser Fehler angezeigt wird, ä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 Webseiten 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 Datei "Web.config " manuell ändern müssen, gehen Sie folgendermaßen vor:
Kopieren Sie die Assemblys des Datenbankmoduls 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.dll in \Bin
- Kopieren Sie C:\Programme\Microsoft SQL Server Compact Edition\v4.0\Private\x86\* in \Bin\x86
- Kopieren Sie C:\Programme\Microsoft SQL Server Compact Edition\v4.0\Private\amd64\* to \Bin\amd64
Erstellen oder öffnen Sie im Stammordner der Website eine Web.config-Datei . (In WebMatrix Beta 3 ist dieser Dateityp verfügbar, wenn Sie auf Alles im Dialogfeld "Dateityp auswählen".)
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 mittlerer Vertrauensstellung in Visual Basic
Wenn Sie Visual Basic (Erstellen von VBHTML-Dateien ) verwenden, funktionieren die
Database
Hilfsprogramme nichtWebGrid
, wenn die Anwendung auf "Mittlere Vertrauensstellung" festgelegt ist.Problemumgehung
Legen Sie vorübergehend fest, dass die Anwendung voll vertrauenswürdig ist.
SQL Server Compact
Problem: Die Eigenschaft "Encrypt" wird nicht erkannt.
SQL Server Compact 4.0 erkennt die
Encrypt
Eigenschaft derSqlCeConnection
Klasse nicht. Sie sollten diese Eigenschaft nicht zum Verschlüsseln von Datenbankdateien verwenden. DieEncrypt
Eigenschaft war in der SQL Server Compact 3.5-Version veraltet und wurde nur aus Gründen der Abwärtskompatibilität beibehalten.Problemumgehung
Verwenden Sie dieEncryption Mode
Eigenschaft derSqlCeConnection
Klasse, um SQL Server Compact 4.0-Datenbankdateien zu verschlüsseln. Das folgende Beispiel zeigt, wie Sie mithilfe derEncryption 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 systemeigenen DLLs von SQL Server Compact 4.0 benötigen die Microsoft Visual C++ 2008-Runtime-Bibliotheken (x86, IA64 und x64), Service Pack 1.
Problemumgehung
Installieren Sie .NET Framework 3.5 SP1. Dadurch werden auch die Visual C++ 2008-Laufzeitbibliotheken SP1 installiert. Sie können die Bibliotheken von folgendem Speicherort herunterladen:Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package ATL Sicherheitsupdate
Hinweis
Beachten Sie, dass die Installation von .NET Framework 2.0, 3.0 oder 4 die Visual C++ 2008-Laufzeitbibliotheken SP1 nicht installiert.
Problem: Wenn SQL Server Compact vor der Installation von .NET Framework auf dem Computer installiert ist, wird der Anbieter invarianter Name nicht in der .NET Framework-Datei "machine.config" 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 Anbieter nicht invariantem Namen in der Datei "machine.config ". Jede Anwendung, die auf dem SQL Server Compact-Eintrag in der Datei "machine.config " basiert, schlägt fehl. Der invariante Namenregistrierungseintrag 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 von .NET Framework aus dem folgenden Speicherort herunter, und installieren Sie sie:Microsoft .NET Framework 3.5 Service Pack 1 (Vollständiges Paket)
Microsoft .NET Framework 4.0 Release (Vollständiges Paket)Installieren Sie dann SQL Server Compact 4.0 SP1 erneut.
Installieren von Anwendungen
Problem: Das Installieren einer Anwendung kann lange dauern, wenn der Ordner "Eigene Dokumente" des Benutzers zu einer Netzwerkfreigabe umgeleitet wird.
Problemumgehung
Keine. Die Anwendung kann eine Weile dauern, bis sie installiert wird, aber ordnungsgemäß installiert wird.
Veröffentlichen von Anwendungen
Problem: Die Website funktioniert möglicherweise nach der Veröffentlichung nicht, wenn dem Feld "Ziel-URL" kein Präfix http:// oder https://
Wenn die Ziel-URL nicht mit
http://
oderhttps://
beginnt, funktioniert die Website möglicherweise nach der Bereitstellung nicht im Dialogfeld "Veröffentlichungseinstellungen".Problemumgehung
Stellen Sie sicher, dass vor der Veröffentlichung einer Website die Ziel-URL im Dialogfeld "Einstellungen veröffentlichen" mithttp://
oderhttps://
.
Problem: Das Veröffentlichen einer MySQL-Datenbank schlägt mit dem Fehler "Fehler beim Veröffentlichen der Datenbank fehl. Dies kann passieren, wenn die Remotedatenbank das Skript nicht ausführen kann."
Der Fehler kann aus einer Reihe von Gründen auftreten. Ein Grund, warum dieser Fehler angezeigt wird, besteht darin, dass das Datenbankskript ein einfaches Anführungszeichen (') enthält und der Standardzeichensatz der MySQL-Datenbank nicht auf UTF-8 festgelegt ist.
Problemumgehung
Legen Sie den Standardzeichensatz für die Remote-MySQL-Datenbank auf UTF-8 fest.
Andere Probleme
Problem: Suche/Filter funktioniert in Berichten für "Gruppieren nach" nicht: Problemtyp
Wenn Sie einen Bericht für eine Website ausführen, wenn Sie Text in das Feld "Nach URL filtern" eingeben und auf "Suchen" klicken, geschieht nichts. Dies liegt daran, dass dieses Steuerelement nicht funktionsfähig ist, während der Status "Gruppieren nach " des Berichts auf "Problemtyp" festgelegt ist. Dies ist die Standardeinstellung.
Problemumgehung klicken Sie auf der Registerkarte "Gruppieren nach " im Menüband auf "URL ", um die Einträge nach deren 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 Browsen zu einer WCF-Anwendung führt zu einem Fehler wie dem folgenden:
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, da die IIS Express Beta-Version WCF standardmäßig nicht unterstützt.
Problemumgehung Verwenden Sie eine der folgenden Problemumgehungen (Problemumgehung Nr. 2 erfordert Microsoft Windows Vista oder höher):
Kopieren Sie die assemblys Microsoft.Web.dll und Microsoft.Web.Administration.dll aus dem WebMatrix-Installationsspeicherort in das Bin-Verzeichnis der WCF-Anwendung. Standardmäßig wird WebMatrix im Unterordner "Microsoft WebMatrix" unter dem Ordner "Programme" des Systems installiert.
Erstellen Sie unter Microsoft Windows Vista oder höher mithilfe der folgenden Befehle einen Symlink zu den Assemblys im Bin-Verzeichnis . (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"
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 Erhöhung erfordern, nicht ausführen.
WebMatrix Beta 3 kann bestimmte Aufgaben, die eine Erhöhung erfordern, nicht ausführen, z. B. das Installieren zusätzlicher Komponenten in den folgenden Situationen:
- Unter Windows Vista oder Windows 7 sind Sie mit einem Konto angemeldet, das nicht über Administratorrechte verfügt und die Benutzerkontensteuerung (User Account Control, UAC) deaktiviert ist.
- Sie verwenden Microsoft Windows XP oder Microsoft Windows Server 2003.
Problemumgehung
Die meisten Aufgaben in WebMatrix Beta 3 erfordern keine Administratorberechtigung. Für diejenigen, die dies tun, können Sie den Vorgang als Administrator ausführen oder die folgenden Schritte ausführen:
- Aktivieren Sie unter Windows Vista oder Windows 7 UAC.
- Fügen Sie unter Windows XP den Benutzer zur Sicherheitsgruppe "Administratoren" hinzu.
Problem: "Website aus Web Gallery" ist deaktiviert.
Die Option "Website aus Web Gallery " ist deaktiviert, wenn der Webplattform-Installer 3.0 nicht installiert ist.
Problemumgehung
Installieren Sie den Microsoft-Webplattform Installer 3.0.
Problem: Unter Windows Server 2003 wird IIS Express nicht für einen nicht administrativen Benutzer gestartet
Wenn Sie auf Windows Server 2003 eine Seite starten oder IIS Express starten, wird IIS Express nicht gestartet. Bei Webseiten wird ein Fehler angezeigt, der angibt, dass die Anwendung von einem nicht administrativen Benutzer gestartet wurde.
Problemumgehung
Starten Sie WebMatrix Beta 3 als Administratorbenutzer.
Problem: Google Chrome ist nicht als Option "Ausführen" verfügbar.
Google Chrome wird nicht in der Liste der Browser unter "Start" auf der Registerkarte "Start " angezeigt.
Problemumgehung
Einige Versionen von Google Chrome registrieren sich nicht ordnungsgemäß mit dem Feature "Standardprogramme" 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 nicht den Primärschlüsselnamen aus der Primärschlüsseltabelle eingeben.
Problemumgehung
Dies ist beabsichtigt. Sie müssen nicht den Namen des Primärschlüssels aus der Primärschlüsseltabelle eingeben.
Problem: Die Schaltfläche "Beziehungen" ist deaktiviert.
Die Schaltfläche "Beziehungen " unter 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 angeben, z
SqlDbType
. B. oderDbType
für Parameter in parametrisierten Abfragen, wird beim Ausführen der Abfrage eine Ausnahme ausgelöst.Problemumgehung
Legen Sie den Datentyp explizit für Parameter wieSqlDbType
z. B. oderDbType
. Dies ist im Fall von BLOB-Datentypen (image
undntext
) kritisch. Verwenden Sie Code wie die 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: