共用方式為


Web Matrix 與 ASP.NET Web Pages (Razor) 搶鮮版 (Beta) 3 讀我檔案

Web Matrix 與 ASP.NET Web Pages (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 伺服器、程式庫引擎和架構環境,這使得從開發到生產的過渡順利、無縫。

安裝

若要安裝 WebMatrix Beta 3,請使用 Microsoft Web Platform Installer 3.0。 安裝 Web 平台安裝程式後,您可以使用它來安裝 WebMatrix Beta 3。

如果您在安裝過程中遇到問題,請參閱 Microsoft Web Platform Installer 問題疑難排解

發布應用程式的說明

請參閱發布應用程式的逐步說明

新功能、變更和已知問題

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 時未安裝 Microsoft Visual Studio 2008 SP1,則無法安裝 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實體架構)

因應措施
卸載 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 Web Pages

本文件的這一部分介紹使用 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>")

Beta 3 中對 ASP.NET 網頁使用 Razor 語法的更改

更改:刪除了「Href 屬性」方法

WebPage 類別的 HrefAttribute 方法已被刪除。 此協助程式用於對 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 頁入門教學中的使用套件管理器安裝協助程式所述。

更改:成員資格、角色和安全類型移至新程序集

以下類型已移至 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 至程式碼)。

更改:請求驗證語法已更改;刪除了「驗證」類

在 Beta 3 版本中,要停用單一欄位或一組欄位的驗證,您可以呼叫 Validation.Exclude 方法,傳入要從驗證中排除的一個或多個欄位的名稱。 Beta 3 版本中提供了一種新語法來繞過驗證。 Beta 3 中使用的 Validation 方法已被刪除。

注意

如果您不停用請求驗證,則如果使用者嘗試上傳 HTML 標記 (例如,透過在頁面上使用富文字編輯器),網站將報告錯誤,例如從用戶端偵測到潛在危險的 Request.Form 值,並且不接受使用者輸入。 如果停用請求驗證,則必須透過防止 ASP.NET Core 中的跨站點程式碼 (XSS) 手動檢查使用者輸入,以確保它不包含潛在危險的標記或程式碼。

若要停用自動請求驗證,請呼叫 Request.Unvalidated 方法,並向其傳遞您想要繞過請求驗證的欄位或其他發佈物件的名稱。 您可以使用此方法繞過 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 (預設情況下,在入門網站範本中設為 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 帳戶 (通常是 NETWORK SERVICE) 具有應用程式根資料夾和子資料夾 (例如 App_Data) 的讀取/寫入權限。 更多詳細資訊請參閱 SQL Server Express 使用者執行個體問題和 ASP.net Web 應用程式專案。

問題:在 Visual Studio 中,不會自動匯入自訂元件 (DLL) 的命名空間

如果在 Visual Studio 的專案中使用自訂元件,則在這些程式集中聲明的命名空間不會在設計時自動匯入。 因此,對自訂類型的參考可能在設計時無法識別,並在 Visual Studio 中標記為無法識別 (使用「波形曲線」)。 此問題僅在 Visual Studio 中的設計時出現;應用程式本身運作正常。

因應措施
包含引用設計時無法辨識的實體的using語句imports (在 Visual Basic 中)。

問題:Visual Studio IntelliSense 和專案範本僅在 ASP.NET MVC 版本 3 中可用

安裝 ASP.NET 網頁不會同時安裝 Visual Studio 工具,例如 IntelliSense 和 ASP.NET 網頁應用程式的專案範本。

解決方法若要在 Visual Studio 中對 ASP.NET 網頁應用程式使用 IntelliSense 和專案模板,請透過 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.Infrastruct.dll」錯誤

如果您先前使用 Razor 語法安裝了 Beta 1 版本的 ASP.NET 網頁,然後安裝了 Beta 3 版本,則所有適當的元件都會安裝在 GAC 中 (Microsoft.Web.Infrastruct.dll 除外)。 因此,當您執行 ASP.NET Razor 頁面時,您會看到一條錯誤,指示無法載入 Microsoft.Web.Infrastruct.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 版本時,會出現錯誤,例如找不到某些類型的錯誤。 出現這種情況的原因是,在 Beta 3 版本中,許多 ASP.NET 網頁類型被移至不同的命名空間中。

因應措施
清除已部署應用程式的 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\* 複製到 \Bin\x86
    • C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Private\amd64\* 複製到 \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 檔案),並且應用程式設定為使用中等信任,則 DatabaseWebGrid 協助程式將無法運作。

因應措施
暫時將應用程式設定為使用完全信任。

SQL Server Compact

問題:「加密」屬性無法識別

SQL Server Compact 4.0 無法辨識 SqlCeConnection 類別的 Encrypt 屬性。 您不應使用此屬性來加密程式庫檔案。 Encrypt 屬性在 SQL Server Compact 3.5 版本中已棄用,保留僅是為了向後相容。

因應措施
使用 SqlCeConnection 類別的 Encryption Mode 屬性來加密 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 Platform Installer 3.0,則Web Gallery 網站選項將會停用。

因應措施
安裝 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 的更多資訊,請訪問以下網站: