RIA サービス ソリューションの配置に関するガイド
このトピックでは、WCF RIA サービス アプリケーションを Web サーバーに展開するときに実行するタスクについて説明します。Web サーバーへの展開では、アプリケーションをホストするために、サーバーに .NET Framework 4 とインターネット インフォメーション サーバー (IIS) 6 または 7 がインストールされている必要があります。RIA サービス も Web サーバーで利用できる必要がありますが、Web サーバーにインストールできない場合もあるので、その他の展開オプションについて説明します。正常な配置のためには ASP.NET Web アプリケーションを正しく構成する必要があり、ここでは Web.config に必要な設定の概要を示します。最後に、発行手順について説明します。
RIA サービス アプリケーションを配置するときに発生する可能性のある問題とその推奨の対処方法については、「RIA サービス ソリューションの配置に関するトラブルシューティング」で説明しています。
.NET Framework 4 が Web サーバーにインストールされていることの確認
RIA サービス アプリケーションが動作するためには、.NET Framework 4 が Web サーバーにインストールされている必要があります。詳細については、「.NET Framework のインストール」を参照してください。
IIS が Web サーバーにインストールされていることの確認
RIA サービス アプリケーションが動作するためには、インターネット インフォメーション サーバー (IIS) 6 または 7 が Web サーバーにインストールされている必要があります。詳細については、「IIS 7 のインストールと展開」および「IIS 6.0 のインストール」を参照してください。
Web サーバーへの RIA Services のインストール
RIA サービス アセンブリが Web サーバーで利用できる必要があります。アプリケーションをホストする Web サーバーに RIA サービス をインストールすることをお勧めします。アクセス許可がないなどの理由でこれが可能ではない場合は、プロジェクトの発行時にその bin フォルダーに含めるか、グローバル アセンブリ キャッシュ (GAC) にインストールして、Web サーバー上で利用できるようにすることができます。
Bin による配置
アプリケーションを配置するときの 1 つのオプションとして、プロジェクトの bin フォルダーに RIA サービス アセンブリを含めることができます。Visual Studio でこれを行うには、ソリューション エクスプローラーで、含める必要がある各 Web プロジェクト アセンブリ参照を選択し、[プロパティ] ウィンドウで [ローカル コピー] プロパティを True に設定します。次の 2 つのアセンブリは常に含める必要があります。
System.ServiceModel.DomainServices.Server.dll
System.ServiceModel.DomainServices.Hosting.dll
これらのプロパティ値を True に設定すると、次回にソリューションをビルドするときに、アセンブリが bin フォルダーにコピーされます。アセンブリを bin フォルダーにコピーすると、サイトを発行するときに、アセンブリが Web サーバーにコピーされます。
データベースへのアクセスに Entity Framework を使用している場合は、System.ServiceModel.DomainServices.EntityFramework.dll アセンブリへの参照も追加する必要があります。
データへのアクセスに LINQ to SQL を使用している場合は、Microsoft.ServiceModel.DomainServices.LinqToSql.dll アセンブリへの参照も追加する必要があります。
GAC による配置
アセンブリを使用する各プロジェクトの Bin フォルダーに RIA サービス アセンブリをコピーする代わりに、GAC にアセンブリをインストールすることができます。GAC 内のすべてのアセンブリは、サーバー上の各アプリケーションが使用できます。各 Bin フォルダーではなく GAC でアセンブリを更新すれば済むので、この方法は保守が簡単です。
Web サーバー上の GAC に RIA サービス アセンブリをインストールするには、次のコマンドを実行します。
msiexec /i RiaServices.msi SERVER=TRUE
Web サーバーの構成
Web サーバーへの RIA サービス アプリケーションの配置では、その Web.config ファイルに、正しく構成された要素と属性が含まれている必要があります。Web.config ファイルは ASP.NET アプリケーションの構成を管理し、新しい Silverlight アプリケーション ウィザードで ASP.NET Web プロジェクトの Silverlight アプリケーションをホストするように選択すると、自動的に作成されます。この Web.config ファイルは、最初に、ターゲット フレームワークが .NET Framework 4.0 であることのみを <compilation>
要素に指定します。配置に必要な実際の値は、新しいドメイン サービス クラスの追加ウィザードを使用して RIA サービス アプリケーションの Web プロジェクトにサービス ドメインを追加するときに、既定で Web.config ファイルに設定されます。
Web.config ファイルには、配置にとって重要なセクションがいくつかあります。それらは、ASP.NET ホスティング モード、IIS、および認証モードを構成する各セクションです。ここでは、RIA サービス アプリケーションの配置に必要となる、それらのセクションでの構成要素の値について説明します。ウィザードは既定でこれらの値を設定しますが、発行を試みる前にさまざまな手順によって値を変更することができます。したがって、正しい値を知り、それらの値が予期どおりに設定されていることを確認すると役立ちます。ここでは、インターネット インフォメーション サービス (IIS) ウィザードを使用して、Web.config ファイルで指定された値で IIS が一貫して構成されていることを確認するためのいくつかの手順についても説明します。
RIA サービス ドメイン サービスは Windows Communication Foundation (WCF) サービスであり、ASP.NET でホストされた場合は、ASP.NET 互換モードでホストされる必要があります。この要件はコードでは設定できず、Web.config ファイルで指定する必要があります。ASP.NET 互換モードを有効にするには、<system.serviceModel>
セクションの <ServiceHostingEnvironment>
要素で aspNetCompatibilityEnabled
プロパティを true に設定します。
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
既定では、値 true
が設定されます。互換モードにより、ドメインの WCF サービスは ASP.NET Web アプリケーション プラットフォームのすべての機能を使用できるようになります。multipleSiteBindingsEnabled
属性を true
に設定すると、HTTP プロトコルを使用するサービスに対し、1 つのサイトで複数の IIS バインディングが有効になります。これらの機能を有効にすることによる結果の詳細については、「WCF サービスと ASP.NET」を参照してください。
注意 : |
---|
WCF サービスには、IIS 以外にも多くのホスト オプションがあります。それらはマネージ アプリケーションで自己ホストする、マネージ Windows サービスでホストする、または Windows プロセス アクティブ化サービス (WAS) でホストすることができます。したがって、WCF サービスは ASP.NET 互換性モードで実行する必要があります。ただし、RIA サービス ドメイン サービスは IIS でしかホストできないので、HTTP トランスポートの使用に制限されます。 |
新しいドメイン サービス クラスの追加ウィザードは、IIS 6 で必要な system.web
セクション内の <httpModules>
要素の <add>
要素を追加します。このセクションの <compilation>
要素で .NET Framework 4.0 が対象とされていて、ドメイン サービス モジュールが次の値と共に追加されていることを確認します。
<system.web>
<httpModules>
<add name="DomainServiceModule" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</httpModules>
<compilation targetFramework="4.0" />
</system.web>
新しいドメイン サービス クラスの追加ウィザードは、IIS 7 で必要な <system.webserver>
セクションの <modules>
要素を追加します。次の値が含まれていることを確認します。
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="DomainServiceModule" preCondition="managedHandler"
type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</modules>
</system.webServer>
ヒント : |
---|
アプリケーションの配置に使用中の IIS のバージョンに必要な構成要素を保持するだけで済みます。たとえば、IIS7 を使用して配置する場合、IIS6 で構成された要素は削除します。ただし、ホスト要素の両方のセットを保持しても問題はありません。 |
RIA サービス ソリューションを操作する場合、1 つの認証スキーマのみを有効にできます。Web.config ファイルの <authentication>
要素は、ASP.NET アプリケーションの ASP.NET 認証スキームを構成します。この認証スキーマは、ASP.NET アプリケーションを参照するユーザーの識別方法を決定します。モード属性は、認証スキーマを指定します。Web.config ファイルおよび階層内の他の構成ファイルの <authentication>
要素をチェックし、複数のスキーマ (Windows、フォーム、Passport、なし) が有効になっていないことを確認します。RIA サービス アプリケーション用のドメイン サービスを作成するときに、既定ではこのセクションは明示的には作成されません。要素が明示的に指定されていないときに使用される既定値は <authentication mode = “Windows”>
です。Web アプリケーションの発行後は、IIS で Windows 認証のみが有効になっていることを確認する必要があります (このオプションを使用している場合)。この手順を以下に示します。
Web.config の設定の詳細については、「ASP.NET の構成」を参照してください。
RIA アプリケーションの配置
IIS への Web アプリケーションの発行
Visual Studio 2010 で RIA サービス アプリケーションを開きます。発行には管理者権限が必要なので、アプリケーションを開くときは、[スタート] メニューで Visual Studio 2010 を右クリックし、[管理者として実行] をクリックします。
ソリューション エクスプローラーで Web プロジェクトを選択して右クリックし、[発行] をクリックします。
[発行] 方法として [Web 配置] を選択し、[サービス URL] として "localhost" を指定し (ローカルに発行する場合。リモートに発行する場合はリモート サーバー名を指定します)、[サイト/アプリケーション] ボックスにサイトとして "既定の Web サイト" を指定します (サーバーがローカルの場合)。さらに、ボックスにアプリケーションとして、アプリケーションの名前を指定します。たとえば、RIAApp1 という名前の RIA サービス アプリケーションをローカルに発行するには、「既定の Web サイト/RIAApp1」と入力します。
[発行先で IIS アプリケーションとしてマーク] および [発行先に余分なファイルを残す (削除しない)] チェック ボックスをオンにします。
[発行] をクリックします。
インターネット インフォメーション サービス (IIS) マネージャーを開き、[接続] ペインに含まれている [既定の Web サイト] の一覧で、発行した Web アプリケーションに移動し、ウィンドウの下部近くにある [コンテンツ ビュー] タブをクリックします。
サイトのテスト ページを開くには、ASP.NET サーバー ページを選択して右クリックし、[参照] をクリックします。
ヒント : |
---|
RIA サービス アプリケーションで必要なアセンブリを bin に配置した場合、それらのアセンブリは IIS マネージャーを使用して bin ファイル フォルダーで見つけることができます。このフォルダーには、Web アプリケーションのアセンブリも含まれています。 |
注意 : |
---|
テスト ページでアプリケーションが表示されない場合、ASP.NET または Silverlight のどちらかに問題があります。Silverlight 配置の詳細については、「配置とローカリゼーション」を参照してください。 |
IIS マネージャーでの認証モードの指定
IIS マネージャーの [接続] ペインで Web アプリケーションを選択します。
[機能ビュー] の IIS グループで [認証] をダブルクリックします。
[Windows 認証] (または使用するように選択した認証モード) が有効になっていることを確認します。IIS は既定では匿名認証のみをサポートするので、通常、これを変更するにはこの手順が必要になります。ASP.NET では、複数の認証モードを有効にすることができ、IIS マネージャーではこのような設定を使用できます。RIA サービス では、匿名認証と共にフォーム認証を使用できますが (ユーザーがログイン ページにアクセスできるようにするため)、単独で使用できるのは Windows 認証のみです。任意の [名前] を右クリックし、必要に応じて [有効化] または [無効化] をクリックして、有効な認証を 1 つのモードに制限します。
注意 : |
---|
匿名認証以外に Windows 認証またはその他のモードが表示されない場合は、IIS の不足しているコンポーネントをインストールする必要があります。これらの手順の詳細については、「IIS 7 のインストールと配置」を参照してください。 |
テスト ページを正しく表示するうえで問題がある場合は、「RIA サービス ソリューションの配置に関するトラブルシューティング」を参照してください。