Web Matrix と ASP.NET Web ページ (Razor) Beta 3 リリース Readme

Web Matrix と ASP.NET Web ページ (Razor) Beta 3 リリース Readme

2010 年 11 月 9 日

内容

概要

Microsoft WebMatrix Beta は、数分でインストールできる無料の Web 開発ツールです。 データベースとプログラミングのフレームワークに Web サーバーを組み合わせることによって、単一の統合エクスペリエンスを実現します。 WebMatrix Beta を使用して、独自の ASP.NET または PHP Web サイトをコーディング、テスト、公開する方法を合理化したり、一般的なオープンソース アプリケーション (DotNetNuke、Umbraco、WordPress、Joomla など) を使用して新しい Web サイトを作成したりすることができます。 WebMatrix Beta では、インターネット上で Web サイトを実行するのと同じ強力な Web サーバー、データベース エンジン、フレームワークが使用されているため、開発環境から運用環境への円滑かつシームレスな移行が可能です。

インストール

WebMatrix Beta 3 をインストールするには、Microsoft Web Platform Installer 3.0 を使用します。 Web Platform Installer をインストールした後、それを使用して WebMatrix Beta 3 をインストールできます。

インストール中に問題が発生した場合は、「Microsoft Web Platform Installer に関する問題のトラブルシューティング」を参照してください。

アプリケーションの公開手順

アプリケーションの公開のステップ バイ ステップの手順に関する記事を参照してください。

新機能、変更点、既知の問題

WebMatrix Beta 3 のインストール

問題: Microsoft .NET Framework 4 をサポートするプラットフォームでしか WebMatrix Beta 3 を使用できない

WebMatrix Beta には .NET Framework Version 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 をインストールします。

問題: SQL Server Compact 4.0 のアセンブリの一部が GAC にインストールされない

SQL Server Compact 4.0 を 64 ビット コンピューターにインストールする際、そのコンピューターに .NET Framework 3.5 SP1 Client Profile しかインストールされていないと、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 Web ページ

ドキュメントのこのセクションでは、Razor 構文を使用した ASP.NET Web ページ Beta 3 リリースの新機能、変更点、既知の問題について説明します。

Razor 構文を使用した ASP.NET Web ページ 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 ページ Beta 3 の変更点

変更点: "HrefAttribute" メソッドが削除されました

WebPage クラスの HrefAttribute メソッドが削除されました。 このヘルパーは、URL 内の安全でない文字をエンコードするために使用されていました。 ASP.NET Razor が自動的に文字列をエンコードするため、不要になりました (エンコードされていない文字列をレンダリングするには、新しい Html.Raw メソッドを使用します)。

変更点: 宣言型の "@helper" ヘルパーの構文が変更されました

Beta 3 リリースでは、@helper 構文を使用して作成されたヘルパーの解析方法が ASP.NET によって変更されました。 本質的に、@helper 構文は、コードを含めることができるマークアップのブロックとしてではなく、コード ブロックとして解析されるようになりました。 そのため、ヘルパー内のコードを @{ } ブロックで囲む必要はありません。 逆に、ヘルパー内のマークアップは、HTML 要素または ASP.NET Razor の <text></text> タグに明示的に含める必要があります。

たとえば、Beta 3 リリースでは次の @helper 構文が機能します。

@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 の一部であるアセンブリに含まれていました。 この変更により、TagBuilder クラスを使用するために ASP.NET MVC をインストールする必要がなくなりました。

ただし、クラスはまだ System.Web.Mvc 名前空間にあります。 TagBuilder クラスを使用するには (たとえば、カスタム ASP.NET Razor ヘルパーで使用する場合)、(@using System.Web.Mvc をコードに追加するなどして) 名前空間を参照する必要があります。

変更点: 要求の検証構文が変更され、"Validation" クラスが削除されました

Beta 3 リリースで、個々のフィールドまたはフィールド セットの検証を無効にするには、Validation.Exclude メソッドを呼び出して、検証から除外するフィールドの名前を渡します。 Beta 3 リリースでは、検証をバイパスするための新しい構文を使用できます。 Beta 3 で使用されていた Validation メソッドは削除されました。

Note

要求の検証を無効にしない場合、ユーザーが (たとえば、ページ上でリッチ テキスト エディターを使用して) HTML マークアップをアップロードしようとすると、Web サイトは "潜在的に危険な 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 Web ページの既知の問題

問題: メンバーシップ用のカスタム ユーザー テーブルを使用しているときに予期しない動作が生じる

ASP.NET Razor Web サイトのメンバーシップ プロバイダーを初期化するには、WebSecurity.InitializeDatabaseConnection メソッドを呼び出します (WebMatrix のスターター サイト テンプレートの _AppStart.cshtml ファイルに、このメソッドの呼び出しが含まれています)。このメソッドの autoCreateTables パラメーターが true に設定されており (スターター サイト テンプレートでは既定で true に設定)、認識できないテーブル名がこのメソッドに (第 2 パラメーターで) 渡された場合、このメソッドはエラーをスローしません。 代わりに、自動的にテーブルが作成されます。

メンバーシップ用にカスタム ユーザー テーブルを使用するつもりで、間違ったテーブル名を WebSecurity.InitializeDatabaseConnection メソッドに渡した場合、これが問題になる可能性があります。 指定したテーブルが存在しない場合でも、既定ではこのメソッドはエラーを生成しません。また、代わりに新しいテーブルが作成されるため、アプリケーションは正常に機能しているように見えます。 しかし、最終的には、カスタム ユーザー テーブル (とそのテーブル内のフィールド) を使用するアプリケーション コードは、予期しないエラーで失敗する可能性があります。

回避策
InitializeDatabaseConnection メソッドに渡す名前がメンバーシップ データベース内のユーザー プロファイル テーブルに一致していることを確認するか、autoCreateTables パラメーターが false に設定されていることを確認します。

問題: "SQL Server のユーザー インスタンスを生成できませんでした" というエラーが表示される

WebMatrix Web アプリケーションで SQL Server Express を使用しており、Windows 7 または Windows Server 2008 R2 で IIS 7.5 が実行されている場合、ユーザーのローカル アプリケーション パスを SQL Server が実行時に取得できないことを示すエラーが表示される場合があります。

回避策 アプリケーションのルート フォルダーとサブフォルダー (App_Data など) に対する読み取り/書き込みアクセス許可が、アプリケーションの実行に使用されている Windows アカウント (通常は NETWORK SERVICE) に付与されていることを確認します。 詳細については、「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 ページをインストールしても Visual Studio 用のツール (IntelliSense や ASP.NET Web ページ アプリケーション用のプロジェクト テンプレートなど) はインストールされません。

回避策 IntelliSense や ASP.NET Web ページ アプリケーション用のプロジェクト テンプレートを Visual Studio で使用するには、Web Platform Installer またはスタンドアロン インストーラーを使用して ASP.NET MVC 3 RC をインストールします。

問題: "<ヘルパー> クラスが見つかりません" エラー

Beta 3 にアップグレードした後、ヘルパー クラス (Facebook クラスなど) が見つからない旨のエラーが表示されることがあります。 Beta 2 以降、Beta 3 も引き続き、ヘルパーは明示的にインストールする必要があるパッケージに移動しています。 既存のサイトは、これらのパッケージを含むようにはアップグレードされません。これには、\My Documents\IISExpress または \My Documents\My Web Sites フォルダー内のサイトが含まれます。 特に、このエラーは、Twitter ヘルパーへの参照を含む My Sites (WebSite1) で既定のサイトを使用する場合に表示されます。

回避策
サイト内のヘルパーへの呼び出しをすべてコメント アウトし、_Admin ページを実行し、使用するヘルパーを含むパッケージをインストールします。 パッケージをインストールした後、ヘルパーを参照する行をコメント解除できます。

問題: Beta 3 の ASP.NET Razor アセンブリを Bin フォルダーに展開しても、ホスティング サイトで動作しない場合がある

ASP.NET Web ページの Web サイトをホスティング サイトに展開し、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 内のアセンブリを更新することを要求します。

問題: フィードなどの外部データをプロキシ サーバー経由で読み取る

サイトを実行しているサーバーがプロキシ サーバーの背後にある場合、サイト外部の情報を読み取るために、Web.config ファイルでプロキシ情報を構成する必要がある場合があります。 たとえば、ReCaptcha ヘルパーを使用する場合、ヘルパーは、reCAPTCHA サービスと通信を行いますが、プロキシ サーバーによってブロックされる可能性があります。 同様に、ASP.NET Web ページで使用されているフィード (パッケージ マネージャーによって使用されているフィードなど) にもプロキシ構成が必要となることがあります。

外部のサービスやパッケージ フィードを使用する際に問題が発生した場合は、アプリケーション ルートの Web.config ファイルに次の要素を配置します。

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

プロキシ サーバーの構成の詳細については、MSDN Web サイトの「<proxy> 要素 (ネットワーク設定)」を参照してください。

問題: "Microsoft.Web.Infrastructure.dll を読み込むことができません" エラー

以前に Razor 構文を使用して ASP.NET Web ページの Beta 1 バージョンをインストールした後、Beta 3 バージョンをインストールした場合は、Microsoft.Web.Infrastructure.dll を除くすべての適切なアセンブリが GAC にインストールされます。 その結果、ASP.NET Razor ページを実行すると、Microsoft.Web.Infrastructure.dll を読み込めなかったことを示すエラーが表示されます。

この問題は、クリーンなコンピューターに Beta 3 リリースを読み込んだ場合には発生しません。

回避策
コントロール パネルで、ASP.NET Web ページをアンインストールします。 次に、Beta 3 リリースを再インストールします。

問題: .NET Framework バージョン 4 をアンインストールすると Razor 構文を使用した ASP.NET Web ページが無効になる

.NET Framework バージョン 4 をアンインストールして再インストールした場合、Razor 構文を使用した ASP.NET Web ページが無効になります。 拡張子が .cshtml のページは正しく実行されません。 ASP.NET Web ページは、マシンのルートにある Web.config ファイルにアセンブリを登録しますが、.NET Framework を削除すると、このファイルも削除されます。 .NET Framework を再インストールすると、新しいバージョンの構成ファイルがインストールされますが、ASP.NET Web ページ アセンブリに対する参照は追加されません。

回避策 .NET Framework バージョン 4 を再インストールした後で、Razor 構文を使用した ASP.NET Web ページを再インストールします。 これにより、マシンのルートにある 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 ページ アセンブリ (Microsoft.WebPages.dll など)のコピーが、サーバー上の Web サイトの Bin フォルダーに配置されます (これは、展開時に自動的に発生したか、開発者がアセンブリを明示的にコピーしたために発生した可能性があります)。ただし、Beta 3 リリースがインストールされると、特定の型が見つからないなどのエラーが発生します。 これは、Beta 3 リリースで、多くの ASP.NET Web ページ型が別の名前空間に移動されたために発生します。

回避策
展開されたアプリケーションの Bin フォルダーをクリアし、新しいアセンブリをフォルダーにコピー (またはアプリケーションを再展開) してから、アプリケーションを再起動します。

問題: IIS 7 または IIS 7.5 で、拡張子なしの URL で .cshtml/.vbhtml ファイルが見つからない

IIS 7 または IIS 7.5 で、次のような URL を含む要求では、拡張子が .cshtml または .vbhtml のページを見つけることができません。

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

IIS 7 または IIS 7.5 では URL 書き換えが既定で有効になっていないため、この問題が発生します。 最も簡単なシナリオは、IIS Express を使用してローカルでテストするときには問題が発生しないが、Web サイトをホスティング Web サイトに展開するときには発生するというシナリオです。

回避策

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

問題: 同じアプリケーションで Web アプリケーション プロジェクトまたは ASP.NET MVC ページと ASP.NET Web ページを使用する

Web アプリケーション プロジェクトまたは ASP.NET MVC アプリケーションで ASP.NET Web ページを使用していた場合、WebPageHttpApplication が見つからない旨のエラーが表示されることがあります。

回避策
このエラーが発生した場合は、アプリケーションの派生元の基底クラスを変更します。 Global.asax ファイルで、次の行を変更します。

public class MvcApplication :  WebPageHttpApplication { ... }

結果として、次を実現します。

public class MvcApplication :  HttpApplication { ... }

これにより、Razor 構文を使用した ASP.NET Web ページの Beta 1 リリースで導入された変更が元に戻ります。

問題: SQL Server Compact がインストールされていないコンピューターにアプリケーションを展開する

SQL Server Compact データベースを含むアプリケーションは、SQL Server Compact がインストールされていないコンピューターで実行できます。 Microsoft WebMatrix Beta 3 では、これらのバイナリが自動的にコピーされ、適切な Web.config ファイル変換が実行されます。

回避策 これらのファイルをコピーし、Web.config ファイルを手動で変更する必要がある場合は、次の手順を実行します。

  1. データベース エンジン アセンブリを、ターゲット コンピューター上のアプリケーションの Bin フォルダー (およびサブフォルダー) にコピーします。

    • copy C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Desktop\System.Data.SqlServerCe.dll to \Bin
    • copy C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Private\x86\* to \Bin\x86
    • Copy C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Private\amd64\* to \Bin\amd64
  2. Web サイトのルート フォルダーで、Web.config ファイルを作成または開きます (WebMatrix Beta 3 では、[ファイルの種類の選択] ダイアログ ボックスの [すべて] をクリックした場合に、このファイルの種類を使用できます)。

  3. 次の要素を (<system.web> 要素内ではなく) <configuration> 要素の子として追加します。

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

問題: Database および WebGrid ヘルパーが Visual Basic の中程度の信頼で機能しない

Visual Basic を使用する (.vbhtml ファイルを作成する) 場合、アプリケーションが中程度の信頼を使用するように設定されていると、Database および WebGrid ヘルパーは機能しません。

回避策
アプリケーションを一時的に完全な信頼を使用するように設定します。

SQL Server Compact

問題: "Encrypt" プロパティが認識されない

SQL Server Compact 4.0 では、SqlCeConnection クラスの Encrypt プロパティが認識されません。 このプロパティを使用してデータベース ファイルを暗号化しないでください。 Encrypt プロパティは SQL Server Compact 3.5 リリースでは非推奨となり、下位互換性のためだけに残されてきました。

回避策
SQL Server Compact 4.0 データベース ファイルを暗号化するには、SqlCeConnection クラスの Encryption Mode プロパティを使用します。 次の例は、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 Redistributable Package ATL Security Update

Note

.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 を必要しているため、.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を再インストールします。

アプリケーションのインストール

問題: ユーザーの My Documents フォルダーがネットワーク共有にリダイレクトされている場合、アプリケーションのインストールに時間がかかる場合がある

回避策
なし。 アプリケーションのインストールには時間がかかる場合がありますが、正しくインストールされます。

アプリケーションの公開

問題: [宛先 URL] フィールドの先頭に http:// または https:// が付いていない場合、公開後にサイトが機能しないことがある

[公開の設定] ダイアログ ボックスで、宛先 URL の先頭が http:// または https:// になっていない場合、展開後にサイトが起動しないことがあります。

回避策
サイトを公開する前に、[公開の設定] ダイアログ ボックスで宛先 URL の先頭が http:// または https:// になっていることを確認してください。

問題: MySQL データベースの公開が失敗し、"データベースを公開できませんでした。 これは、リモート データベースでスクリプトを実行できない場合に発生する可能性があります" というエラーが発生する

このエラーは、さまざまな理由で発生する可能性があります。 このエラーが発生する理由の 1 つは、データベース スクリプトに単一引用符 (') が含まれており、宛先の 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'、またはその依存関係の 1 つが読み込めませんでした。 指定されたファイルが見つかりません。

これは、IIS Express Beta リリースが既定で WCF をサポートしていないために発生します。

回避策 次のいずれかの回避策を使用します (回避策 #2 は Microsoft Windows Vista 以降が必要です)。

  1. Microsoft.Web.dll および Microsoft.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 に 2 つのアセンブリをインストールします。 昇格されたプロンプトから、次のコマンドを実行します。

    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 ギャラリーからサイト] オプションは無効になります。

回避策
Microsoft Web Platform Installer 3.0 をインストールしてください。

問題: Windows Server 2003 で、IIS Express が管理者以外のユーザーで起動しない

Windows Server 2003 で、ページを起動したり IIS Express を起動したりしても、IIS Express が起動しません。 Web ページの場合、管理者以外のユーザーがアプリケーションを起動したことを示すエラーが表示されます。

回避策
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 データ型 (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 の詳細については、次の Web サイトを参照してください。