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 做為 ASP.NET 網頁的整合式開發環境。 使用 Visual Studio 或 Visual Studio Code。
如果您在安裝期間發生問題,請參閱 針對 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 伺服器 2008
- Windows Server 2008 R2
- Windows Vista SP1 (含) 以後版本
- Windows XP SP3
- Windows 伺服器 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 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 控制面板中的 程式和功能 來卸載 SQL Server Compact 4.0 Microsoft。
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>")
Beta 3 中對 ASP.NET 網頁使用 Razor 語法的更改
更改:刪除了「Href 屬性」方法
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」協助程式移至新套件
協助工具
更改:成員資格、角色和安全類型移至新程序集
以下類型已移至
WebMatrix.WebData程序集中:
ExtendedMembershipProviderSimpleMembershipProviderSimpleRoleProviderWebSecurity
變更:「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 標記(例如,使用頁面上的 RTF 編輯器),則網站會回報錯誤,例如 從用戶端偵測到可能危險的 Request.Form 值 ,且使用者輸入不接受。 如果您停用要求驗證,您必須手動檢查使用者輸入,以確保它不包含潛在的危險標記或腳稿,方法是 防止 ASP.NET Core 中的跨網站腳稿 (XSS) 。
若要停用自動請求驗證,請呼叫
Request.Unvalidated方法,並向其傳遞您想要繞過請求驗證的欄位或其他發佈物件的名稱。 您可以使用此方法繞過Form、QueryString、Cookies和ServerVariables集合中任何項目的驗證。 以下範例展示如何使用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 中,Starter Site 範本會在 _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 帳戶具有應用程式根資料夾和子資料夾的讀取/寫入許可權,例如 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 中使用 IntelliSense 和專案範本來 ASP.NET Web Pages 應用程式,請透過 Web Platform Installer 或 獨立安裝程式安裝 ASP.NET MVC 3 RC。
問題:「找不到<協助程式>類別」錯誤
升級到 Beta 3 後,您可能會看到無法找到協助程式類別 (例如,
因應措施
將網站中對任何輔助工具的調用註解掉,執行_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 網頁 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>如需設定 Proxy 伺服器的詳細資訊,請參閱 <MSDN 網站上的 proxy> 元素(網路設定)。
問題:「無法載入 Microsoft.Web.Infrastruct.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 版本時,會出現錯誤,例如找不到某些類型的錯誤。 出現這種情況的原因是,在 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 進行本地測試時沒有發現問題,但在將網站部署到託管網站時卻遇到了問題。
因應措施
- 如果您控制伺服器,請在伺服器上安裝更新,該更新如 已推出更新,可使某些 IIS 7.0 或 IIS 7.5 處理程式能處理 URL 未以句點結束的要求 中所述。
- 如果您沒有伺服器電腦的控制權(例如,您要部署至主控網站),請將下列內容新增至網站的 Web.config 檔案:
<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 檔案變更,請執行下列動作:
將資料庫引擎元件複製到目標電腦上的應用程式 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
在網站的根資料夾中,建立或開啟 Web.config 檔案。 (在 WebMatrix Beta 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
問題:「加密」屬性無法識別
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=;p;w;here;>;"); engine.CreateDatabase();Dim engine As SqlCeEngine = New SqlCeEngine("Data Source=Northwind.sdf;encryption mode=platform default;Password=Password=;p;w;here;>;") engine.CreateDatabase()若要變更現有 SQL Server Compact 4.0 程式庫的加密模式,請執行下列操作:
SqlCeEngine engine = new SqlCeEngine("Data Source=Northwind.sdf;Password=Password=;p;w;here;>;"); engine.Compact("Data Source=Northwind.sdf;encryption mode=ppc2003 compatibility;Password=Password=;p;w;here;>;");Dim engine As SqlCeEngine = New SqlCeEngine("Data Source=Northwind.sdf;Password=Password=;p;w;here;>;") engine.Compact("Data Source=Northwind.sdf;encryption mode=ppc2003 compatibility;Password=Password=;p;w;here;>;")若要加密未加密的 SQL Server Compact 4.0 程式庫,請執行下列操作:
SqlCeEngine engine = new SqlCeEngine("Data Source=Northwind.sdf"); engine.Compact("Data Source=Northwind.sdf;encryption mode=platform default;Password=;p;w;here;>;");Dim engine As SqlCeEngine = New SqlCeEngine("Data Source=Northwind.sdf;") engine.Compact("Data Source=Northwind.sdf;encryption mode=platform default;Password=;p;w;here;>;")
問題:需要 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。 您可以從以下位置下載這些程式庫:
注意
請注意,安裝 .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,依其來源網址將項目分組。 在此狀態下,用於篩選條目的文字方塊和按鈕起作用。
問題:WCF 應用程式無法與 IIS Express 一起執行
瀏覽到 WCF 應用程式會導致類似以下錯誤:
無法載入檔案或組件「Microsoft.Web.Administration,Version=7.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35」或其依賴項之一。 系統找不到指定的檔案。
出現這種情況是因為 IIS Express Beta 版本預設不支援 WCF。
因應措施 使用下列任一因應措施(因應措施 #2 需要Microsoft Windows Vista 或更高版本):
將 Microsoft.Web.dll 和 Microsoft.Web.Administration.dll 元件從 WebMatrix 安裝位置複製到 WCF 應用程式的 bin 目錄。 根據預設,WebMatrix 會安裝在系統 Program Files 資料夾下的 Microsoft WebMatrix 子資料夾中。
在 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"在 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 圖庫中的網站」已停用
如果未安裝 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 中,如果沒有為參數化查詢中的參數指定資料類型,例如
SqlDbType或DbType,則查詢執行時間會引發例外狀況。因應措施
明確設定參數的資料類型,例如SqlDbType或DbType。 這對於 BLOB 資料類型 (image和ntext) 來說至關重要。 使用如下程式碼: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 的更多資訊,請訪問以下網站: