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 平台安装程序问题”。

发布应用程序的说明

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

新功能、更改和Known 问题

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

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

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

  • System.Data.SqlServerCe.dll (ADO.NET 提供程序)
  • System.Data.SqlServerCe.Entity.dll (ADO.NET Entity Framework)

解决方法
卸载 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 方法呈现未编码的字符串。

更改:声明性“@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 属性只是包装了此属性。

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

帮助 Facebook 程序已移动到 Facebook.Helper 库,其中包括 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 标记(例如,通过使用页面上的富文本编辑器),则网站将报告一个错误,如 从客户端 检测到可能危险的 Request.Form 值,并且用户输入不接受。 如果禁用请求验证,则必须手动检查用户输入,以确保它不包含潜在的危险标记或脚本,方法是阻止 ASP.NET 核心中的跨站点脚本(XSS)。

若要禁用自动请求验证,请调用 Request.Unvalidated 该方法,向其传递要绕过请求验证的字段或其他 post 对象的名称。 可以使用此方法绕过对集合和集合中的任何项的FormQueryStringCookiesServerVariables验证。 以下示例演示如何使用 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 文件中包括对此方法的调用。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 在运行时无法检索用户的本地应用程序路径。

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

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

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

解决方法
在 Visual Basic 中包含引用 using 在设计时无法识别的实体的语句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 网站上的代理> 元素(网络设置 )。

问题:“无法加载 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 文件夹。 (这在部署期间可能自动发生,或者因为开发人员显式复制了程序集。但是,安装 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 语法的 beta 1 版本的 ASP.NET 网页 引入的更改。

问题:将应用程序部署到未安装 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 目录中的程序集的符号链接。 (此方法的优点是它不创建程序集的副本。

    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 的详细信息,请参阅以下网站: