Web Matrix 和 ASP.NET 网页 (Razor) Beta 3 版本自述文件

Web Matrix 和 ASP.NET 网页 (Razor) Beta 3 版本自述文件

2010 年 11 月 9 日

目录

概述

Microsoft WebMatrix Beta 版是一个免费 Web 开发堆栈,在几分钟内即可安装。 它将 Web 服务器与数据库和编程框架集成,以创建单一的集成体验。 可以使用 WebMatrix Beta 简化编写、测试和发布自己的 ASP.NET 或 PHP 网站的方式,也可以使用 WebMatrix Beta 通过 DotNetNuke、Umbraco、WordPress 或 Joomla 等热门开源应用启动新网站。 WebMatrix Beta 使用相同的强大的 Web 服务器、数据库引擎和框架环境,这些环境将在 Internet 上运行网站,这使得从开发到生产的过渡变得顺畅且无缝。

安装

若要安装 WebMatrix Beta 3,请使用 Microsoft Web 平台安装程序 3.0。 安装 Web 平台安装程序后,可以使用它安装 WebMatrix Beta 3。

如果在安装过程中出现问题,请参阅排查Microsoft Web 平台安装程序问题

发布应用程序的说明

请参阅 发布应用程序的分步说明

新功能、更改和已知问题

WebMatrix Beta 3 安装

问题:WebMatrix Beta 3 仅在支持 Microsoft .NET Framework 4 的平台上可用

WebMatrix Beta 版需要.NET Framework版本 4。 在某些情况下,WebMatrix Beta 安装程序将允许你尝试在不属于受支持配置集的平台上进行安装。 具体而言,没有 SP1 更新的 Windows Vista 将允许你开始安装 WebMatrix Beta,但 .NET Framework 4 组件将失败并阻止安装。

解决方法
在受支持的平台上安装,其中包括:

  • Windows 7
  • Windows Server 2008
  • Windows Server 2008 R2
  • Windows Vista SP1 或更高版本
  • Windows XP SP3
  • Windows Server 2003 SP2

问题:如果在未安装 Microsoft Visual Studio 2008 SP1 的情况下安装 Microsoft Visual Studio 2008,则无法安装 WebMatrix Beta 3

解决方法
从 Microsoft 下载中心安装 Microsoft Visual Studio 2008 Service Pack 1

问题:SQL Server Compact 4.0 的某些程序集未安装在 GAC 中

在 64 位计算机上安装 SQL Server Compact 4.0 时,SQL Server Compact 4.0 的托管程序集不会放置在全局程序集缓存 (GAC) 中,并且计算机仅安装了 .NET Framework 3.5 SP1 客户端配置文件。 未安装在 GAC 中的托管程序集包括:

  • System.Data.SqlServerCe.dll (ADO.NET 提供程序)
  • System.Data.SqlServerCe.Entity.dll (ADO.NET 实体框架 )

解决方法
卸载 SQL Server Compact 4.0。 从以下位置下载并安装 .NET Framework 3.5 SP1 的完整版本:

Microsoft .NET Framework 3.5 Service Pack 1 (完整包)

然后重新安装 SQL Server Compact 4.0。

问题:无法使用命令行卸载SQL Server Compact

在此版本中,使用命令行选项卸载SQL Server Compact不起作用。

解决方法
使用 Windows 控制面板中的程序和功能卸载 Microsoft SQL Server Compact 4.0。

ASP.NET 网页

本文档的此部分介绍使用 Razor 语法的 ASP.NET 网页 Beta 3 版本的新功能、更改和已知问题。

使用 Razor 语法的 ASP.NET 网页 Beta 3 中的新增功能

新增:“Html.Raw”方法呈现未编码的标记

使用新 Html.Raw 方法可将 HTML 标记呈现为标记,而不是呈现编码的输出。 (默认情况下,ASP.NET Razor 在呈现字符串之前对其进行编码。) 语法为:

Html.Raw(value)

下面的示例演示如何使用 Html.Raw

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

使用 Razor 语法 ASP.NET 网页的 Beta 3 中的更改

更改:已删除“HrefAttribute”方法

HrefAttribute类的 WebPage 方法已删除。 此帮助程序用于对 URL 中的不安全字符进行编码。 不再需要它,因为 ASP.NET Razor 会自动对字符串进行编码。 (使用新 Html.Raw 方法来呈现未编码的 strings.)

更改:声明性“@helper”帮助器的语法已更改

在 Beta 3 版本中,ASP.NET 更改了分析使用 @helper 语法创建的帮助程序的方式。 从本质上讲, @helper 语法现在解析为代码块,而不是可以包含代码的标记块。 因此,帮助程序内的代码不需要包含在 块中 @{ } 。 相反,帮助程序内的标记必须显式包含在 HTML 元素或 ASP.NET Razor <text></text> 标记中。

例如,以下 @helper 语法适用于 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>
}

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

请注意, @{ } 不再使用帮助程序中初始代码周围的字符。 这是因为默认情况下,帮助程序的内容被视为代码块。 帮助程序呈现以开始 <a> 标记开头的标记。 如果帮助程序必须呈现纯文本或不包含结束标记 (标记(例如, <meta> 标记) ),则要呈现的内容必须位于标记中 <text></text>

更改:已删除“WebPageContext.HttpContext”

WebPageContext.HttpContext 属性已被删除。 请改用 HttpContext.Current。 (属性 WebPageContext.HttpContext 只是包装了 this.)

更改:“Facebook”帮助程序已移动到新包

帮助Facebook程序已移动到Facebook。帮助程序库,其中包括Facebook帮助程序和其他功能。 必须将此库安装为单独的包,如使用 ASP.NET Pages 入门教程中的“使用包管理器安装帮助程序”中所述。

更改:成员身份、角色和安全类型移动到新程序集

以下类型已移动到 WebMatrix.WebData 程序集:

  • ExtendedMembershipProvider
  • SimpleMembershipProvider
  • SimpleRoleProvider
  • WebSecurity

更改:“TagBuilder”类移动到 System.Web.WebPages.dll 程序集

TagBuilder 已移动到 System.Web.WebPages.dll 程序集。 以前,这是 ASP.NET MVC 的一部分的程序集。 此更改意味着无需安装 ASP.NET MVC 即可使用 TagBuilder 类。

但是, 类仍位于 命名空间中 System.Web.Mvc 。 例如,若要使用 TagBuilder 类 (,例如,在自定义 ASP.NET Razor 帮助程序) 中,必须引用命名空间 (,方法是将 添加到 @using System.Web.Mvc 代码) 。

更改:请求验证语法已更改;已删除“Validation”类

在 Beta 3 版本中,若要禁用单个字段或字段集的验证,可以调用 Validation.Exclude 方法,传入要从验证中排除的字段的名称。 Beta 3 版本中提供了用于绕过验证的新语法。 Validation已删除 Beta 3 中使用的 方法。

注意

如果不禁用请求验证,如果用户尝试上传 HTML 标记 (例如在页面上) 使用格式文本编辑器,网站将报告错误,例如 从客户端检测到 A 潜在危险的 Request.Form 值 ,并且不接受用户输入。 如果禁用请求验证,则必须手动检查用户输入,以确保它不包含潜在的危险标记或脚本,方法是阻止跨站点脚本 (XSS) ASP.NET Core

若要禁用自动请求验证,请调用 Request.Unvalidated 方法,向其传递要绕过请求验证的字段或其他 post 对象的名称。 可以使用此方法绕过对 、QueryStringCookiesServerVariables 集合中的任何项的Form验证。 以下示例演示如何使用 Unvalidated 方法:

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

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

使用 Razor 语法 ASP.NET 网页的已知问题

问题:将自定义用户表用于成员身份时出现意外行为

若要初始化 ASP.NET Razor 网站的成员资格提供程序,请调用 WebSecurity.InitializeDatabaseConnection 方法。 (在 WebMatrix 中,初学者网站模板在 _AppStart.cshtml file. ) 如果 autoCreateTables 此方法的参数默认设置为 true (,则会在 Starter Site 模板) 中将其设置为 true,如果无法识别的表名称传递到方法 (第二个参数) , 方法不会引发错误。 相反,它会自动创建表。

如果打算使用自定义用户表作为成员身份,但将错误的表名传递给 方法,则可能会出现问题 WebSecurity.InitializeDatabaseConnection 。 由于默认情况下,如果指定的表不存在,则该方法不会引发错误,并且由于该方法会创建一个新表,因此应用程序可能看起来正在运行。 但是,依赖于自定义用户表 (以及其中字段的应用程序代码) 最终可能会失败并出现意外错误。

解决方法
确保方法中 InitializeDatabaseConnection 传递的名称与成员资格数据库中的用户配置文件表匹配,或确保 参数 autoCreateTables 设置为 false。

问题:“无法生成SQL Server的用户实例”错误

如果 WebMatrix Web 应用程序使用 SQL Server Express 并在 Windows 7 或 Windows Server 2008 R2 上运行 IIS 7.5,则可能会看到一个错误,指示SQL Server无法在运行时检索用户的本地应用程序路径。

解决 方案 确保应用程序在 (下运行的 Windows 帐户通常为网络服务) 对应用程序的根文件夹和子文件夹(如 App_Data)具有读/写权限。 有关更多详细信息,请参阅SQL Server Express用户实例化和 ASP.net Web 应用程序项目中的问题

问题:在 Visual Studio 中,自定义程序集 (DLL 的命名空间不会自动导入)

如果在 Visual Studio 的项目中使用自定义程序集,则这些程序集中声明的命名空间不会在设计时自动导入。 因此,在设计时可能无法识别对自定义类型的引用,并且使用“波形曲线”) 在 Visual Studio (中标记为无法识别。 此问题仅在 Visual Studio 中的设计时发生;应用程序本身可以正常运行。

解决方法
using在 Visual Basic) imports 中包含引用在设计时无法识别的实体的语句 (。

问题:Visual Studio IntelliSense 和项目模板仅在 ASP.NET MVC 版本 3 中可用

安装 ASP.NET 网页不会同时安装适用于 Visual Studio 的工具,例如 IntelliSense 和用于 ASP.NET 网页应用程序的项目模板。

解决 方案若要在 Visual Studio 中使用 IntelliSense 和项目模板 ASP.NET 网页应用程序,请通过 Web 平台安装程序或独立安装程序安装 ASP.NET MVC 3 RC。

问题:“<找不到帮助程序> 类”错误

升级到 Beta 3 后,可能会看到一个错误,指出 Facebook 帮助程序类 (例如找不到类) 。 从 Beta 2 开始,在 Beta 3 中继续,帮助程序已移动到必须显式安装的包。 现有网站不会升级为包含这些包;这包括 \My Documents\IISExpress\My Documents\My Web Sites 文件夹中的网站 。 具体而言,如果使用 “我的网站” (WebSite1) 中的默认网站(其中包括对 Twitter 帮助程序的引用),则会看到此错误。

解决方法
注释掉对站点中任何帮助器的调用,运行 _Admin 页面,并安装包含要使用的帮助器的包或包。 安装包后,可以取消注释引用帮助器的行。

问题:在托管站点上,将 Beta 3 ASP.NET Razor 程序集部署到 Bin 文件夹可能不起作用

如果将 ASP.NET 网页 网站部署到宿主站点,并且将 ASP.NET Razor Beta 3 程序集部署到站点的 Bin 文件夹,则可能会遇到错误,包括以下错误:

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

如果宿主提供程序已将 ASP.NET 网页 Beta 1 程序集安装到服务器的全局应用程序缓存中, (GAC) ,则可能会发生这种情况。 GAC 中的程序集优先于 Bin 文件夹中本地安装的程序集。

解决 方案 请与托管提供商联系,确认你看到的错误是由于提供程序的程序集版本与你的版本之间存在冲突。 如果是这样,请请求宿主提供程序更新服务器的 GAC 中的程序集。

问题:通过代理服务器读取源或其他外部数据

如果运行站点的服务器位于代理服务器后面,则可能需要在 Web.config 文件中配置代理信息,以便能够读取来自站点外部的信息。 例如,如果使用 ReCaptcha 帮助程序,则帮助程序将与 reCAPTCHA 服务通信,但可能会被代理服务器阻止。 同样,ASP.NET 网页中使用的源(例如包管理器使用的源)可能需要代理配置。

如果在使用外部服务或使用包源时遇到问题,请将以下元素放入应用程序的根 Web.config 文件中:

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

有关配置代理服务器的详细信息,请参阅 <MSDN 网站上的 proxy> Element (Network Settings)

问题:“无法加载 Microsoft.Web.Infrastructure.dll”错误

如果以前使用 Razor 语法安装了 beta 1 版本的 ASP.NET 网页,然后安装 Beta 3 版本,则除 Microsoft.Web.Infrastructure.dll之外,所有适当的程序集都安装在 GAC 中。 因此,ASP.NET Razor 页面运行时,会看到一个错误,指示无法加载 Microsoft.Web.Infrastructure.dll

如果在干净的计算机上加载了 Beta 3 版本,则不会出现此问题。

解决方法
在 控制面板 中,卸载 ASP.NET 网页。 然后重新安装 Beta 3 版本。

问题:卸载.NET Framework版本 4 会禁用 Razor 语法 ASP.NET 网页

如果卸载.NET Framework版本 4,然后重新安装它,则禁用使用 Razor 语法 ASP.NET 网页。 扩展名为 .cshtml 的页面无法正常运行。 ASP.NET 网页在计算机根 Web.config 文件中注册程序集,删除.NET Framework删除该文件。 重新安装.NET Framework会安装新版本的配置文件,但不添加 ASP.NET 网页程序集的引用。

解决 方案重新安装.NET Framework后,使用 Razor 语法重新安装 ASP.NET 网页。 这会将以下元素添加到计算机根目录中的 Web.config 文件中,该文件通常位于以下位置:

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>

问题:以前使用 Bin 文件夹中 ASP.NET 程序集部署的应用程序遇到错误

在部署期间,ASP.NET 网页程序集的副本 (例如, Microsoft.WebPages.dll) 到服务器上的网站的 Bin 文件夹中。 (这可能是在部署期间自动发生的,也可能是因为开发人员显式复制了 assemblies.) 但是,安装 Beta 3 版本时,会发生错误,例如找不到某些类型的错误。 出现这种情况的原因是,许多 ASP.NET 网页类型已移动到 Beta 3 版本的不同命名空间中。

解决方法
清除已部署应用程序的 Bin 文件夹,将新程序集复制到文件夹 (或重新部署应用程序) ,然后重启应用程序。

问题:无扩展名 URL 在 IIS 7 或 IIS 7.5 上找不到 .cshtml/.vbhtml 文件

在 IIS 7 或 IIS 7.5 上,具有如下 URL 的请求无法找到扩展名为 .cshtml.vbhtml 的页面:

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

出现此问题的原因是,默认情况下未为 IIS 7 或 IIS 7.5 启用 URL 重写。 最可能的情况是,使用 IIS Express 在本地测试时看不到问题,但在将网站部署到托管网站时会遇到此问题。

解决方法

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

问题:在同一应用程序中使用 Web 应用程序项目或 ASP.NET MVC 和 ASP.NET 网页

如果在 Web 应用程序项目或 ASP.NET MVC 应用程序中使用 ASP.NET 网页,则可能会看到找不到 WebPageHttpApplication 的错误。

解决方法
如果收到此错误,请更改从中派生应用程序的基类。 在 Global.asax 文件中,更改以下行:

public class MvcApplication :  WebPageHttpApplication { ... }

更改为:

public class MvcApplication :  HttpApplication { ... }

这实际上反转了使用 Razor 语法的 ASP.NET 网页 Beta 1 版本引入的更改。

问题:将应用程序部署到未安装SQL Server Compact的计算机

包含SQL Server Compact数据库的应用程序可以在未安装 SQL Server Compact 的计算机上运行。 Microsoft WebMatrix Beta 3 会自动复制这些二进制文件,并执行相应的 Web.config 文件转换。

解决 方案 如果需要复制这些文件并手动更改 Web.config 文件,请执行以下操作:

  1. 将数据库引擎程序集复制到目标计算机上应用程序的 bin 文件夹 (和子文件夹) :

    • C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Desktop\System.Data.SqlServerCe.dll复制到\Bin
    • 复制 C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Private\x86\* to\Bin\x86
    • 复制 C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Private\amd64\* to\Bin\amd64
  2. 在网站的根文件夹中,创建或打开 Web.config 文件。 (在 WebMatrix Beta 3 中,如果在“选择文件类型”对话框中单击“ 全部 ”,则此 文件类型 可用。)

  3. 将以下元素添加为配置>元素的<子元素, (不在 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>

问题:数据库和 WebGrid 帮助程序在 Visual Basic 中的中等信任中不起作用

如果使用 Visual Basic () 创建 .vbhtml 文件, Database 则 如果应用程序设置为使用“中等信任”,则 和 WebGrid 帮助程序将不起作用。

解决方法
暂时将应用程序设置为使用完全信任。

SQL Server Compact

问题:无法识别“Encrypt”属性

SQL Server Compact 4.0 无法识别 Encrypt 类的 SqlCeConnection 属性。 不应使用此属性来加密数据库文件。 属性Encrypt在 SQL Server Compact 3.5 版本中已弃用,仅出于向后兼容性而保留。

解决方法
Encryption Mode使用 类的 SqlCeConnection 属性加密SQL Server Compact 4.0 数据库文件。 以下示例演示如何使用 Encryption Mode 属性创建加密SQL Server Compact 4.0 数据库:

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

若要更改现有 SQL Server Compact 4.0 数据库的加密模式,请执行以下操作:

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

若要加密未加密的 SQL Server Compact 4.0 数据库,请执行以下操作:

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

问题:需要Microsoft Visual C++ 2008 运行时库

SQL Server Compact 4.0 的本机 DLL 需要 Microsoft Visual C++ 2008 运行时库 (x86、IA64 和 x64) Service Pack 1。

解决方法
安装 .NET Framework 3.5 SP1。 这还会安装 Visual C++ 2008 运行时库 SP1。 可以从以下位置下载库:

Microsoft Visual C++ 2008 Service Pack 1 可再发行程序包 ATL 安全更新

注意

请注意,安装 .NET Framework 2.0、3.0 或 4 不会安装 Visual C++ 2008 运行时库 SP1。

问题:如果在计算机上安装.NET Framework之前安装了SQL Server Compact,则其提供程序固定名称未在.NET Framework machine.config文件中注册

SQL Server Compact可以安装在未安装.NET Framework的计算机上,因为SQL Server Compact确实需要 .NET Framework。 如果在安装 SQL Server Compact 之前未安装 .NET Framework 版本 3.5 和 4,则SQL Server Compact安装程序不会在 machine.config 文件中注册其提供程序固定名称。 依赖于 machine.config文件中SQL Server Compact项的任何应用程序都将失败。 machine.config 中的固定名称注册项如以下示例所示:

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

解决方法
卸载 SQL Server Compact 4.0 CTP1。 从以下位置下载并安装.NET Framework的完整版本:

Microsoft .NET Framework 3.5 Service pack 1 (完整包)
Microsoft .NET Framework 4.0 版本 (完整包)

然后重新安装SQL Server Compact 4.0 SP1

安装应用程序

问题:如果用户的“我的文档”文件夹重定向到网络共享,则安装应用程序可能需要很长时间

解决方法
无。 应用程序可能需要一段时间才能安装,但会正确安装。

发布应用程序

问题:如果“目标 URL”字段未以 http:// 或 https:// 为前缀,则发布后网站可能无法正常工作

“发布设置” 对话框中,如果目标 URL 不以 http://https://开头,则站点在部署后可能无法正常工作。

解决方法
请确保在发布网站之前,“ 发布设置” 对话框中的目标 URL 以 http://https://开头。

问题:发布 MySQL 数据库失败,出现错误“无法发布数据库。 如果远程数据库无法运行脚本,则可能会发生这种情况。”

出现此错误的原因有很多。 出现此错误的一个原因是,如果数据库脚本包含单引号字符 (') ,并且目标 MySQL 数据库的默认字符集不是 UTF-8。

解决方法
将远程 MySQL 数据库的默认字符集设置为 UTF-8。

其他问题

问题:搜索/筛选在分组依据的报表中不起作用:问题类型

为网站运行报表时,如果在“ 按 URL 筛选 ”框中输入文本并单击“ 搜索”,则不会发生任何操作。 这是因为,当报表的 “分组依据 ”状态设置为“ 问题类型”(默认值)时,此控件不起作用。

解决 方案 在功能区的“ 分组依据 ”选项卡中,单击“ URL ”,按其源 URL 对条目进行分组。 在此状态下,用于筛选条目的文本框和按钮正常工作。

问题:WCF 应用程序无法使用 IIS Express 运行

浏览到 WCF 应用程序会导致如下错误:

无法加载文件或程序集“Microsoft.Web.Administration, Version=7.0.0.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。 系统找不到指定的文件。

发生这种情况的原因是 IIS Express Beta 版本默认不支持 WCF。

解决 方案 使用以下任一解决方法 (解决方法 #2 需要 Microsoft Windows Vista 或更高版本) :

  1. Microsoft.Web.dllMicrosoft.Web.Administration.dll 程序集从 WebMatrix 安装位置复制到 WCF 应用程序的 bin 目录。 默认情况下,WebMatrix 安装在系统的 Program Files 文件夹下的 Microsoft WebMatrix 子文件夹中。

  2. 在 Microsoft Windows Vista 或更高版本上,使用以下命令创建到 bin 目录中程序集的符号链接。 (此方法的优点是不会创建 assemblyies 的副本。)

    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. 在 GAC 中安装这两个程序集。 在提升的提示符下运行以下命令:

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

问题:WebMatrix Beta 3 无法执行某些需要提升的任务

WebMatrix Beta 3 无法执行某些需要提升的任务,例如在以下情况下安装其他组件:

  • 在 Windows Vista 或 Windows 7 上,你使用没有管理权限的帐户登录,并且用户帐户控制 (UAC) 处于禁用状态。
  • 你使用的是 Microsoft Windows XP 或 Microsoft Windows Server 2003。

解决方法
WebMatrix Beta 3 中的大多数任务不需要管理权限。 对于执行此操作的用户,可以以管理员身份执行操作,或按照以下步骤操作:

  • 在 Windows Vista 或 Windows 7 上,启用 UAC。
  • 在 Windows XP 上,将用户添加到管理员安全组。

如果未安装 Web 平台安装程序 3.0,则禁用“ 来自 Web 库中的网站 ”选项。

解决方法
安装 Microsoft Web 平台安装程序 3.0

问题:在 Windows Server 2003 上,非管理用户无法启动IIS Express

在 Windows Server 2003 上,启动页面或启动IIS Express时,IIS Express不会启动。 对于网页,将显示一个错误,指示应用程序已由非管理用户启动。

解决方法
以管理用户身份启动 WebMatrix Beta 3。

问题:Google Chrome 不可用作“运行”选项

Google Chrome 不会显示在“开始”选项卡上的“运行”下的浏览器列表中。

解决方法
某些版本的 Google Chrome 未正确注册 Windows 中的“默认程序”功能。 解决方法是启动 Google Chrome,单击“ 自定义和控制 Google Chrome ”菜单,单击“ 选项”,然后单击“ 将 Google Chrome 设为默认浏览器”。

问题:“外键”对话框不允许输入主键

外键 ”对话框不允许输入主键表中的主键名称。

解决方法
这是有目的性的。 无需从主键表中输入主键的名称。

问题:“关系”按钮已禁用

数据库”工作区中“”选项卡下的“关系”按钮已禁用SQL Server Compact数据库。

解决方法
无。 SQL Server Compact不支持表之间的关系。

问题:参数化 SQL 查询引发异常

在 SQL Server Compact 4.0 中,如果未为参数化查询中的参数指定数据类型(如 SqlDbTypeDbType ),则在查询运行时将引发异常。

解决方法
显式设置 参数的数据类型,例如 SqlDbTypeDbType。 对于 BLOB 数据类型 (imagentext) ,这一点至关重要。 使用如下所示的代码:

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

有关详细信息

有关 WebMatrix Beta 3 的详细信息,请参阅以下网站: