共用方式為


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 開發堆疊,會在幾分鐘內安裝。 它會將網頁伺服器與資料庫和程式設計架構整合,以便建立單一且整合的使用經驗。 您可以使用 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 問題進行疑難解答

發佈應用程式的指示

請參閱 發佈應用程式的逐步指示

新功能、變更和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,則無法安裝 WebMatrix Beta 3

因應措施
從 Microsoft 下載中心安裝 Microsoft Visual Studio 2008 Service Pack 1

問題:SQL Server Compact 4.0 的某些組件不會安裝在 GAC 中

當您在 64 位元電腦上安裝 SQL Server Compact 4.0,而且該電腦只安裝了 .NET Framework 3.5 SP1 Client Profile 時,SQL Server Compact 4.0 的 Managed 組件就不會放置於全域組件快取 (GAC) 中。 不會安裝在 GAC 中的 Managed 組件包括:

  • 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 (Full Package)

然後重新安裝 SQL Server Compact 4.0。

問題:無法使用命令列解除安裝 SQL Server Compact

在這個版本中,使用命令列選項解除安裝 SQL Server Compact 沒有作用。

因應措施
使用 Windows 控制台 中的程式和功能來卸載 Microsoft SQL Server Compact 4.0。

ASP.NET Web Pages

本檔的本節說明使用 Razor 語法的 Beta 3 版 ASP.NET Web Pages 新功能、變更和已知問題。

使用Razor語法 ASP.NET Web Pages 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 Web Pages 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。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 標記 (例如,使用頁面上的 RTF 編輯器) ,網站將會回報錯誤,例如 從用戶端偵測到潛在危險 Request.Form 值 ,而且不接受使用者輸入。 如果您停用要求驗證,您必須手動檢查使用者輸入,以確保它不包含潛在的危險標記或腳本,方法是防止 ASP.NET Core 中的跨網站腳本 (XSS)

若要停用自動要求驗證,請呼叫 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 Web Pages的已知問題

問題:針對成員資格使用自訂使用者資料表時發生非預期的行為

若要初始化 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 帳戶通常為 NETWORK SERVICE) 具有應用程式根資料夾的讀取/寫入許可權,以及 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 Web Pages 不會一併安裝適用於 Visual Studio 的工具,例如適用於 ASP.NET Web Pages 應用程式的 IntelliSense 和專案範本。

解決方案若要使用 Visual Studio 中 ASP.NET Web Pages 應用程式的 IntelliSense 和專案範本,請透過 Web 平台安裝程式或獨立安裝程式安裝 ASP.NET MVC 3 RC。

問題:「<找不到協助程式> 類別」錯誤

升級至 Beta 3 之後,您可能會看到協助程式類別 (的錯誤,例如找不到 Facebook 類別) 。 從 Beta 2 開始並繼續在 Beta 3 中,協助程式已移至您必須明確安裝的套件。 現有的網站不會升級為包含這些套件;這包括 \My Documents\IISExpress\My Documents\My Web Sites 資料夾中的網站 。 特別是,如果您在 My Sites (WebSite1) 中使用預設網站,其中包含協助程序的參考 Twitter ,您將會看到此錯誤。

因應措施
將網站中的任何協助程式呼叫批注化、執行 _Admin 頁面,以及安裝包含您想要使用的協助程式套件或套件。 安裝套件之後,您可以取消批注參考協助程式的程式代碼行。

問題:將 Beta 3 ASP.NET Razor 元件部署到 Bin 資料夾可能無法在裝載網站上運作

如果您將 ASP.NET Web Pages 網站部署至主控網站,而且如果您將 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 Web Pages Beta 1 元件安裝到伺服器的全域應用程式快取 (GAC) ,就會發生這種情況。 GAC 中的元件優先於 在 Bin 資料夾中本機安裝的元件。

解決方案 請連絡您的主控提供者,以確認您看到的錯誤是因為提供者版本與元件之間的衝突所造成。 如果是,請要求裝載提供者更新伺服器 GAC 中的元件。

問題:經由 Proxy 伺服器讀取摘要或其他外部資料

如果執行月臺的伺服器位於 Proxy 伺服器後方,您可能需要在 Web.config 檔案中設定 Proxy 資訊,才能讀取來自網站外部的資訊。 例如,如果您使用 ReCaptcha 協助程式,協助程式會與 reCAPTCHA 服務通訊,但 Proxy 伺服器可能會遭到封鎖。 同樣地,用於 ASP.NET Web Pages 中的摘要 (例如封裝管理員所使用的摘要) 可能需要 Proxy 組態。

如果您在使用外部服務或使用套件摘要時遇到問題,請將下列元素放入應用程式的根 Web.config 檔案中:

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

如需設定 Proxy 伺服器的詳細資訊,請參閱 <MSDN 網站上的 proxy> 元素 (網路設定)

問題:「無法載入 Microsoft.Web.Infrastructure.dll」錯誤

如果您先前使用 Razor 語法安裝 Beta 1 版本的 ASP.NET Web Pages,然後安裝 Beta 3 版本,則除了 Microsoft.Web.Infrastructure.dll以外,所有適當的元件都會安裝在 GAC 中。 因此,當您執行 ASP.NET Razor 頁面時,您會看到指出無法載入 Microsoft.Web.Infrastructure.dll 的錯誤。

如果您在全新電腦上載入 Beta 3 版本,則不會發生此問題。

因應措施
在 控制台 中,卸載 ASP.NET Web Pages。 然後重新安裝 Beta 3 版本。

問題:解除安裝 .NET Framework 4 版就會停用含有 Razor 語法的 ASP.NET Web Pages

如果您解除安裝 .NET Framework 4 版,然後重新安裝它,就會停用含有 Razor 語法的 ASP.NET Web Pages。 具有 .cshtml 擴展名的頁面無法正確執行。 ASP.NET Web Pages 會在計算機根目錄Web.config 檔案中註冊元件,並移除該檔案 .NET Framework 移除該檔案。 雖然重新安裝 .NET Framework 會安裝新版的組態檔,不過卻不會加入 ASP.NET Web Pages 組件的參考。

解決方案重新安裝 .NET Framework 之後,請使用 Razor 語法重新安裝 ASP.NET Web Pages。 這會將下列元素新增至計算機根目錄中 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 Web Pages元件的複本 (例如, Microsoft.WebPages.dll) 到伺服器上的網站 Bin 資料夾。 (這可能會在部署期間自動發生,或因為開發人員明確複製了 assemblies.) 不過,安裝 Beta 3 版本時,會發生錯誤,例如找不到特定類型的錯誤。 這是因為許多 ASP.NET Web Pages 類型已移至 Beta 3 版本的不同命名空間。

因應措施
清除已部署應用程式的 Bin 資料夾、將新元件複製到資料夾 (或重新部署應用程式) ,然後重新啟動應用程式。

Issue: Extensionless URLs do not find .cshtml/.vbhtml files on IIS 7 or IIS 7.5

在 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 Web Pages,您可能會看到找不到 WebPageHttpApplication 的錯誤。

因應措施
如果您收到此錯誤,請變更應用程式衍生自其中的基類。 在 Global.asax 檔案中,變更下列這一行:

public class MvcApplication :  WebPageHttpApplication { ... }

為此值:

public class MvcApplication :  HttpApplication { ... }

這實際上會反轉 Razor 語法的 Beta 1 版 ASP.NET Web Pages 引進的變更。

問題:將應用程式部署至未安裝 SQL Server Compact 的計算機

包含 SQL Server Compact 資料庫的應用程式可以在未安裝 SQL Server Compact 的計算機上執行。 Microsoft WebMatrix Beta 3 會自動為您複製這些二進位檔,並執行適當的 Web.config 檔案轉換。

解決方案 如果您需要複製這些檔案並手動進行 Web.config 檔案變更,請執行下列動作:

  1. 將資料庫引擎元件複製到目標電腦上的應用程式 (資料夾與 子資料夾)

    • 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 資料庫檔案。 下列範例示範如何使用 屬性建立加密 SQL Server Compact 4.0 資料庫Encryption Mode

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.configSQL Server Compact 檔案中 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 (Full Package)
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 上,將使用者新增至 Administrators 安全組。

如果未安裝 Web Platform Installer 3.0,則會停用 [來自網站庫的網站 ] 選項。

因應措施
安裝 Microsoft Web Platform Installer 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 的詳細資訊,請參閱下列網站: