Visual Studio を使用した ASP.NET Web 配置: トラブルシューティング

著者: Tom Dykstra

スタート プロジェクトをダウンロードする

このチュートリアル シリーズでは、Visual Studio 2012 または Visual Studio 2010 を使用して、ASP.NET Web アプリケーションを Azure App Service Web Apps またはサードパーティのホスティング プロバイダーに配置 (発行) する方法について説明します。 チュートリアル シリーズについては、「シリーズの最初のチュートリアル」をご覧ください。

このページでは、Visual Studio を使用して ASP.NET Web アプリケーションを配置するときに発生する可能性のある一般的な問題について説明します。 それぞれについて、1 つ以上の考えられる原因と、対応する解決策が提供されます。

ここで示すシナリオは、Azure とサード パーティのホスティング プロバイダーの両方に適用されます。 Azure App Service の Web アプリのトラブルシューティングの詳細については、以下のリソースを参照してください。

'/' アプリケーションのサーバー エラー。現在のカスタム エラー設定により、エラーの詳細がリモートで表示されない

シナリオ

リモート ホストにサイトを配置すると、Web.config ファイルの customErrors 設定に言及するエラー メッセージが表示されますが、エラーの実際の原因は示されません。

Server Error in '/' Application.
Runtime Error 

Description: An application error occurred on the server. The current custom error settings 
for this application prevent the details of the application error from being viewed remotely 
(for security reasons). It could, however, be viewed by browsers running on the local server 
machine. 

Details: To enable the details of this specific error message to be viewable on remote machines,
please create a <customErrors> tag within a "web.config" configuration file located in the
root directory of the current web application. This <customErrors> tag should then have its
"mode" attribute set to "Off".

考えられる原因と解決策

ASP.NET の既定では、Web アプリケーションがローカル コンピューターで実行されている場合にのみ、詳細なエラー情報が表示されます。 一般に、Web アプリケーションがインターネット経由で一般公開されている場合は、詳細なエラー情報を表示しないようにする必要があります。これは、ハッカーがこの情報を使用してアプリケーションの脆弱性を見つける可能性があるためです。 ただし、サイトまたは更新プログラムをサイトに配置するときに何かの問題が発生することがあり、その場合は実際のエラー メッセージを取得する必要があります。

アプリケーションがリモート ホストで実行されたときに詳細なエラー メッセージを表示できるようにするには、Web.config ファイルを編集して customErrors モードをオフに設定し、アプリケーションを再配置して、アプリケーションをもう一度実行します。

  1. アプリケーションの Web.config ファイルに system.web 要素内の customErrors 要素がある場合は、mode 属性を "off" に変更します。 それ以外の場合は、次の例に示すように、mode 属性が "off" に設定された customErrors 要素を system.web 要素に追加します。

    <configuration>
      <system.web>
        <customErrors mode="off"/>
      </system.web>
    </configuration>
    
  2. アプリケーションをデプロイします。

  3. アプリケーションを実行し、エラーが発生する原因となった操作を繰り返します。 これで、実際のエラー メッセージが何であるかを確認できます。

  4. エラーを解決したら、元の customErrors 設定を復元し、アプリケーションを再配置します。

そのファイルが既に存在する場合、'ContosoUniversity' を作成/シャドウ コピーできません。

シナリオ

Visual Studio でプロジェクトを実行しようとすると、エラー ページに次の例のようなメッセージが表示されます。

Server Error in '/' Application. そのファイルが既に存在する場合、'ContosoUniversity' を作成/シャドウ コピーできません。

考えられる原因と解決策

しばらく待ってからブラウザーを更新するか、サイトを再コンパイルして、もう一度実行してみてください。

SQL Server Compact を使用する Web ページでアクセスが拒否される

シナリオ

SQL Server Compact を使用するサイトを配置し、データベースにアクセスする配置済みサイトでページを実行すると、次のエラー メッセージが表示されます。

アクセスが拒否されました。 (HRESULT からの例外: 0x80070005 (E_ACCESSDENIED))" "

考えられる原因と解決策

サーバー上の NETWORK SERVICE アカウントは、bin\amd64 または bin\x86 フォルダー内にある SQL Service Compact ネイティブ バイナリを読み取れる必要がありますが、これらのフォルダーの読み取りアクセス許可がありません。 bin フォルダーに NETWORK SERVICE の読み取りアクセス許可を設定し、サブフォルダーにそのアクセス許可を拡張します。

アクセス許可が不十分なため、構成ファイルを読み取れない

シナリオ

Visual Studio の発行ボタンをクリックしてローカル コンピューター上の IIS にアプリケーションを配置すると、発行が失敗し、[出力] ウィンドウに次のようなエラー メッセージが表示されます。

IIS 構成ファイル 'MACHINE/REDIRECTION' の読み取り中にエラーが発生しました: この操作を実行する ID は ... でした。エラー: アクセス許可が不十分なため、構成ファイルを読み取れません。

考えられる原因と解決策

ローカル コンピューターで IIS に対してワンクリック発行を使用するには、管理者のアクセス許可を持つ Visual Studio を実行している必要があります。 Visual Studio を閉じ、管理者権限で再起動します。

接続先のコンピューターに接続できませんでした...指定されたプロセスの使用

シナリオ

Visual Studio の発行ボタンをクリックしてアプリケーションを配置すると、発行が失敗し、[出力] ウィンドウに次のようなエラー メッセージが表示されます。

Web deployment task failed.(Could not connect to the destination computer ("<server URL>") using the specified process
("The Web Management Service"). This can happen if a proxy server is interrupting communication with the destination server. 
Disable the proxy server and try again.) ... The remote server returned an error: (502) Bad Gateway.

考えられる原因と解決策

プロキシ サーバーが移行先サーバーとの通信を中断しています。 Windows コントロール パネルまたは Internet Explorer で、[インターネット オプション] を選択し、[接続] タブを選択します。[インターネットのプロパティ] ダイアログ ボックスで、[LAN の設定] をクリックします。 [ローカル エリア ネットワーク (LAN) の設定] ダイアログ ボックスで、[設定を自動的に検出する] チェック ボックスをオフにします。 次に、発行ボタンをもう一度クリックします。

問題が解決しない場合は、システム管理者に問い合わせて、プロキシまたはファイアウォールの設定で何ができるかを確認してください。 この問題は、Web 配置で Web 管理サービスの配置に標準以外のポートが使用されるために発生します (8172)。他の接続の場合、Web 配置ではポート 80 が使用されます。 サード パーティのホスティング プロバイダーに配置する場合、通常は Web 管理サービスを使用します。

既定の .NET 4.0 アプリケーション プールが存在しない

シナリオ

.NET Framework 4 を必要とするアプリケーションを配置すると、次のエラー メッセージが表示されます。

既定の .NET 4.0 アプリケーション プールは存在しません。または、アプリケーションを追加できませんでした。 ASP.NET 4.0 がこのマシンにインストールされていることを確認してください。

考えられる原因と解決策

ASP.NET 4 が IIS にインストールされていません。 配置先のサーバーが開発用コンピューターであり、Visual Studio 2010 がインストールされている場合、ASP.NET 4 はそのコンピューターにインストールされますが、IIS にはインストールされない可能性があります。 配置先のサーバーで、管理者特権のコマンド プロンプトを開き、次のコマンドを実行して IIS ASP.NET 4 をインストールします。

cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –iru

既定のアプリケーション プールの .NET Framework バージョンを手動で設定する必要がある場合もあります。 詳細については、このシリーズの「テスト環境としての IIS への配置」チュートリアルを参照してください。

初期化文字列の形式が仕様に適合しません。インデックス 0 で始まっています。

シナリオ

ワンクリック発行を使用してアプリケーションを配置した後、データベースにアクセスするページを実行するときに、次のエラー メッセージが表示されます。

初期化文字列の形式が仕様に適合しません。インデックス 0 で始まっています。

考えられる原因と解決策

配置されたサイトで Web.config ファイルを開き、次の例のように、接続文字列の値が $(ReplaceableToken_ で始まっているかどうかを確認します。

<connectionStrings>
  <add name="DefaultConnection" connectionString="$(ReplaceableToken_DefaultConnection-Web.config Connection String_0)" providerName="System.Data.SqlServerCe.4.0" />
  <add name="SchoolContext" connectionString="$(ReplaceableToken_SchoolContext-Web.config Connection String_0)" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

接続文字列がこの例のように見える場合は、プロジェクト ファイルを編集し、すべてのビルド構成の PropertyGroup 要素に次のプロパティを追加します。

<AutoParameterizationWebConfigConnectionStrings>False</AutoParameterizationWebConfigConnectionStrings>

その後、アプリケーションを再配置します。

HTTP 500 内部サーバー エラー

シナリオ

配置されたサイトを実行すると、エラーの原因を示す具体的な情報なしで、次のエラー メッセージが表示されます。

HTTP 500 - 内部サーバー エラー。

考えられる原因と解決策

500 エラーの原因は多数ありますが、これらのチュートリアルに従う場合に考えられる原因の 1 つは、いずれかの Web.config 変換ファイルの間違った場所に、XML 要素が配置されていることです。 たとえば、<configuration> の直下ではなく、<system.web> の下に <location> 要素を挿入する変換を配置すると、このエラーが発生します。 Web.config 変換プレビュー機能を使用して、変換が意図したとおりに動作していることを確認できます。 正しくコーディングされていない変換を見つけた場合、これを解決するには、変換ファイルを修正して再配置します。 エラーが明らかでない場合は、変換をコメントアウトして再配置して、500 エラーの原因がどの変換かを確認してください。

HTTP 500.21 内部サーバー エラー

シナリオ

配置されたサイトを実行すると、次のエラー メッセージが表示されます。

HTTP エラー 500.21 - 内部サーバー エラー。 ハンドラー "PageHandlerFactory-Integrated" のモジュール一覧に不適切なモジュール "ManagedPipelineHandler" があります。

考えられる原因と解決策

ターゲットを配置したサイトは ASP.NET 4 ですが、ASP.NET 4 はサーバー上の IIS に登録されていません。 サーバーで管理者特権のコマンド プロンプトを開き、次のコマンドを実行して ASP.NET 4 を登録します。

cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –iru

既定のアプリケーション プールの .NET Framework バージョンを手動で設定する必要がある場合もあります。 詳細については、このシリーズの「テスト環境としての IIS への配置」チュートリアルを参照してください。

App_Data で SQL Server Express Database を開く際にログインに失敗した

シナリオ

App_Data フォルダー内の .mdf ファイルとして SQL Server Express データベースを指すように Web.config ファイルの接続文字列を更新した場合、アプリケーションを初めて実行すると、次のエラー メッセージが表示されます。

System.Data.SqlClient.SqlException: このログインで要求されたデータベース "DatabaseName" を開けません。 ログインに失敗しました。

考えられる原因と解決策

.mdf ファイルの名前は、以前にコンピューターに存在していた SQL Server Express データベースがあった場合、その既存のデータベースの .mdf ファイルを削除済みであっても、同じ名前を使用することはできません。 .mdf ファイルの名前を、データベース名としてこれまで使用されたことがない名前に変更し、新しい名前を使用するように Web.config ファイルを変更します。 代わりに、SQL Server Management Studio Express を使用して、以前にあった SQL Server Express データベースを削除することもできます。

モデルの互換性を確認できない

シナリオ

新しい SQL Server Express データベースを指すように Web.config ファイル接続文字列を更新した場合、アプリケーションを初めて実行すると、次のエラー メッセージが表示されます。

データベースにモデル メタデータが含まれていないため、モデルの互換性をチェックできません。 IncludeMetadataConvention が DbModelBuilder 規則に追加されていることを確認します。

考えられる原因と解決策

Web.config ファイルに配置したデータベース名が、以前にコンピューターで使用されていたことがあった場合は、データベースとが既に存在し、いくつかのテーブルがその中に存在している可能性があります。 これまでコンピューターで使用されたことがない新しい名前を選択し、その新しいデータベース名を使用するために、Web.config ファイルがこれを指すように変更します。 代わりに、SQL Server Express ユーティリティまたは SQL Server Management Studio Express を使用して、既存のデータベースを削除することもできます。

スクリプトがユーザーまたはロールの作成を試みたときの SQL エラー

シナリオ

[SQL のパッケージ化/公開] タブで構成されたデータベースの配置を使用しており、配置中に実行される SQL スクリプトにはユーザーの作成コマンドまたはロールの作成コマンドが含まれている場合、これらのコマンドの実行時にスクリプトの実行が失敗します。 次のような詳細なメッセージが表示される場合があります。

The approximate location of the error was between lines '1' and '3' of the script. 
The verbose log may have more information about the error. The command started with:
CREATE USER [user2] FOR LOGIN [user2] WITH DEFAULT
Error: User does not have permission to perform this action.

このエラーが、[Web を公開] ウィザードでデータベースの配置を構成したときに発生し、[SQL のパッケージ化/公開] タブではない場合は、構成と配置に関するフォーラムでスレッドを作成すると、このトラブルシューティング ページにソリューションが追加されます。

考えられる原因と解決策

配置の実行に使用しているユーザー アカウントに、ユーザーまたはロールを作成するアクセス許可がありません。 たとえば、ホスティング会社は、db_datareader ロール、db_datawriter ロール、db_ddladmin ロールを、利用者のために設定したユーザー アカウントに割り当てることがあります。 これらはほとんどのデータベース オブジェクトを作成するのに十分ですが、ユーザーまたはロールを作成する場合には十分ではありません。 このエラーを回避する方法の 1 つは、データベースの配置からユーザーとロールを除外することです。 これを行うには、データベースの自動生成されたスクリプトの PreSource 要素を編集して、次の属性を含めることができます。

CopyAllUsers=false, CopyAllRoles=false

プロジェクト ファイルの PreSource 要素を編集する方法については、「方法: プロジェクト ファイルの配置設定を編集する」を参照してください。 開発データベース内のユーザーまたはロールがターゲット データベースに存在する必要がある場合は、ホスティング プロバイダーにお問い合わせください。

配置中にカスタム スクリプトを実行するときの SQL Server タイムアウト エラー

シナリオ

配置中にカスタム SQL スクリプトを実行するように指定し、Web 配置でそれらを実行すると、タイムアウトになります。

考えられる原因と解決策

トランザクション モードが異なる複数のスクリプトを実行すると、タイムアウト エラーが発生する可能性があります。 既定では、自動的に生成されたスクリプトはトランザクションで実行されますが、カスタム スクリプトでは実行されません。 [SQL のパッケージ化/公開] タブで [既存のデータベースからのデータまたはスキーマの取得] オプションを選択し、カスタム SQL スクリプトを追加する場合は、すべてのスクリプトで同じトランザクション設定が使用されるように、一部のスクリプトのトランザクション設定を変更する必要があります。 詳細については、「方法: Web アプリケーション プロジェクトと共にデータベースを配置する」を参照してください。

すべてが同じになるようにトランザクション設定を構成しても、このエラーが発生する場合は、考えられる回避策は、スクリプトを個別に実行することです。 [SQL のパッケージ化/公開] タブの [データベース スクリプト] グリッドで、タイムアウト エラーの原因となるスクリプトの [組み込み] チェック ボックスをオフにしてから、プロジェクトを発行します。 次に、[データベース スクリプト] グリッドに戻り、そのスクリプトの [組み込み] チェック ボックスをオンにして、他のスクリプトの [組み込み] チェック ボックスをオフにします。 次に、プロジェクトをもう一度発行します。 今度は、発行時に、選択したカスタム スクリプトのみが実行されます。

サイト マニフェストのストリーム データはまだ利用可能ではない

シナリオ

deploy.cmd ファイルと t (テスト) オプションを使用してパッケージをインストールすると、次のエラー メッセージが表示されます。

エラー: 'sitemanifest/dbFullSql[@path='C:\TEMP\AdventureWorksGrant.sql']/sqlScript' のストリーム データはまだ利用可能ではありません。

考えられる原因と解決策

エラー メッセージは、コマンドがテスト レポートを生成できないことを意味します。 ただし、y (実際のインストール) オプションを使用すると、コマンドが実行される可能性があります。 このメッセージは、テスト モードでのコマンドの実行に問題があることだけを示しています。

このアプリケーションには ManagedRuntimeVersion v4.0 が必要

シナリオ

配置しようとすると、次のエラー メッセージが表示されます。

使用しようとしているアプリケーション プールの 'managedRuntimeVersion' プロパティが 'v2.0' に設定されています。 このアプリケーションには 'v4.0' が必要です。

考えられる原因と解決策

ASP.NET 4 が IIS にインストールされていません。 配置先のサーバーが開発用コンピューターであり、Visual Studio 2010 がインストールされている場合、ASP.NET 4 はそのコンピューターにインストールされますが、IIS にはインストールされない可能性があります。 配置先のサーバーで、管理者特権のコマンド プロンプトを開き、次のコマンドを実行して IIS ASP.NET 4 をインストールします。

cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –i

Microsoft.Web.Deployment.DeploymentProviderOptions をキャストできない

シナリオ

パッケージを配置すると、次のエラー メッセージが表示されます。

'Microsoft.Web.Deployment.DeploymentProviderOptions' 型のオブジェクトを 'Microsoft.Web.Deployment.DeploymentProviderOptions' 型にキャストできません。

考えられる原因と解決策

Web 配置 1.1 UI を使用して IIS マネージャーから Web 配置 2.0 がインストールされているサーバーに配置しようとしています。 IIS リモート管理ツールを使用してパッケージをインポートして配置する場合は、接続を確立するときに [追加された新機能] ダイアログ ボックスをオンにします。 (このダイアログ ボックスは、接続が最初に確立されたときに 1 回だけ表示される場合があります。接続をクリアしてやり直すには、IIS マネージャーを閉じ、コマンド プロンプトで inetmgr /reset と入力してもう一度起動します。)一覧表示されている機能の 1 つが Web 配置 UI で、バージョン番号が 8 未満の場合、配置しようとしているサーバーには、1.1 バージョンと 2.0 バージョンの両方の Web 配置がインストールされている可能性があります。 2.0 がインストールされているクライアントから配置するには、サーバーに Web 配置 2.0 のみがインストールされている必要があります。 この問題を解決するには、ホスティング プロバイダーに問い合わせる必要があります。

SQL Server Compact のネイティブ コンポーネントを読み込めない

シナリオ

配置されたサイトを実行すると、次のエラー メッセージが表示されます。

バージョン 8482 の ADO.NET プロバイダーに対応する SQL Server Compact のネイティブ コンポーネントを読み込めません。 SQL Server Compact の正しいバージョンをインストールしてください。 詳細については、サポート技術情報の記事 974247 を参照してください。

考えられる原因と解決策

配置されたサイトには、amd64 サブフォルダーおよび x86 サブフォルダーと、アプリケーションの bin フォルダーの下のそれらの中にネイティブ アセンブリがありません。 SQL Server Compact がインストールされているコンピューターでは、ネイティブ アセンブリは C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Private にあります。 Visual Studio プロジェクトの正しいフォルダーに正しいファイルを取得する最善の方法は、NuGet SqlServerCompact パッケージをインストールすることです。 パッケージのインストールでは、ネイティブ アセンブリを amd64 および x86 にコピーするビルド後スクリプトが追加されます。 ただし、これらを配置するには、手動でプロジェクトに含める必要があります。 詳細については、SQL Server Compact の配置に関するチュートリアルを参照してください。

Entity Framework Code First アプリケーションを配置した後の "パスが無効です" エラー

シナリオ

Entity Framework Code First Migrations を使用するアプリケーションと、データベースを App_Data フォルダー内のファイルに格納する SQL Server Compact などの DBMS を配置します。 最初の配置後にデータベースを作成するように Code First Migrations を構成しました。 アプリケーションを実行すると、次の例のようなエラー メッセージが表示されます。

パスが無効です。 データベースのディレクトリを確認してください。 [Path = c:\inetpub\wwwroot\App_Data\DatabaseName.sdf ]

考えられる原因と解決策

Code First はデータベースを作成しようとしていますが、App_Data フォルダーは存在しません。 配置時に App_Data フォルダーに何もファイルがなかったか、[プロジェクトのプロパティ] ウィンドウの [Web のパッケージ化/発行] タブで [App_Data の除外] を選択しました。 サーバーにコピーするファイルがフォルダーに存在しない場合、配置プロセスではサーバー上にフォルダーは作成されません。 サイトにデータベースが既に設定されており、発行プロファイルの [ターゲットで追加ファイルを削除する] を選択した場合、配置プロセスによってそれらのファイルと App_Data フォルダー自体が削除されます。 この問題を解決するには、App_Data フォルダーに .txt ファイルなどのプレースホルダー ファイルを配置し、[App_Data の除外] が選択されていないことを確認してから、再配置します。

"基になる RCW から分離された COM オブジェクトを使用できません。"

シナリオ

ワンクリック発行を使用してアプリケーションを配置すると、次のエラーが表示されます。

Web 配置タスクに失敗しました。 (リモート エージェントの URL '<https://serverurl.com/msdeploy.axd?site=sitename>' への要求を完了できません。)
リモート エージェントの URL '<https://url/msdeploy.axd?site=sitename>' への要求を完了できません。
要求が中止されました: 要求が取り消されました。
基になる RCW から分離された COM オブジェクトは使用できません。

考えられる原因と解決策

通常、Visual Studio を閉じて再起動するだけで、このエラーを解決できます。

発行に使用されるユーザー資格情報に setACL 機関がないため、配置が失敗する

シナリオ

発行が失敗し、フォルダーのアクセス許可を設定する権限がないことを示すエラーが表示されます (使用しているユーザー アカウントに setACL 権限がありません)。

考えられる原因と解決策

既定では、Visual Studio はサイトのルート フォルダーに対する読み取りアクセス許可を設定し、App_Data フォルダーに対する書き込みアクセス許可を設定します。 サイト フォルダーの既定のアクセス許可が正しく、設定する必要がないことがわかっている場合は、<IncludeSetACLProviderOn Destination>False</IncludeSetACLProviderOnDestination> を発行プロファイル ファイル (単一のプロファイルに影響を与える) または wpp.targets ファイル (すべてのプロファイルに影響を与える) に追加することで、この動作を無効にします。 これらのファイルを編集する方法については、プロファイル (.pubxml) ファイルの配置設定を編集する方法を参照してください。

アプリケーションがアプリケーション フォルダーに書き込もうとしたときにアクセス拒否エラーが発生する

シナリオ

いずれかのアプリケーション フォルダーでファイルを作成または編集しようとすると、そのフォルダーに対する書き込み権限がないため、アプリケーション エラーが発生します。

考えられる原因と解決策

既定では、Visual Studio はサイトのルート フォルダーに対する読み取りアクセス許可を設定し、App_Data フォルダーに対する書き込みアクセス許可を設定します。 アプリケーションでサブフォルダーへの書き込みアクセスが必要な場合は、このシリーズの「フォルダーのアクセス許可を設定する」チュートリアルと「運用環境への配置」チュートリアルに示すように、そのフォルダーのアクセス許可を設定できます。 アプリケーションでサイトのルート フォルダーへの書き込みアクセスが必要な場合は、<IncludeSetACLProviderOn Destination>False</IncludeSetACLProviderOnDestination> を発行プロファイル ファイル (単一のプロファイルに影響を与える) または wpp.targets ファイル (すべてのプロファイルに影響を与える) に追加して、ルート フォルダーに読み取り専用アクセスを設定できないようにする必要があります。 これらのファイルを編集する方法については、プロファイル (.pubxml) ファイルの配置設定を編集する方法を参照してください。

構成エラー - targetFramework 属性が、インストールされているバージョンの .NET Framework より後のバージョンを参照する

シナリオ

ASP.NET 4.5 をターゲットとする Web プロジェクトを正常に発行しましたが、アプリケーションを実行すると (Web.config ファイルで customErrors モードが "off" に設定されています)、次のエラーが発生します。

Web.config ファイルの <compilation> 要素の 'targetFramework' 属性は、.NET Framework のバージョン 4.0 以降 (たとえば、'<compilation targetFramework="4.0">') をターゲットにするためにのみ使用されます。 'targetFramework' 属性は、現在、インストールされているバージョンの .NET Framework より後のバージョンを参照しています。 .NET Framework の有効なターゲット バージョンを指定するか、必要なバージョンの .NET Framework をインストールしてください。

エラー ページの [ソース エラー] ボックスでは、エラーの原因として Web.config の次の行が強調表示されます。

<compilation targetFramework="4.5" />

考えられる原因と解決策

サーバーは、ASP.NET 4.5 をサポートしていません。 ホスティング プロバイダーに問い合わせて、ASP.NET 4.5 のサポートをいつ追加できるかを確認してください。 サーバーをアップグレードするオプションがない場合は、代わりに ASP.NET 4 以前を対象とする Web プロジェクトを配置する必要があります。

ASP.NET 4 以前の Web プロジェクトを同じ変換先に配置する場合は、[Web を公開] ウィザードの [設定] タブの [ターゲットで追加ファイルを削除する] チェック ボックスをオンにします。 [ターゲットで追加ファイルを削除する] を選択しない場合は、[構成エラー] ページが表示されます。

プロジェクトの [プロパティ] ウィンドウにはターゲット フレームワークのドロップダウン リストが含まれていますが、.NET Framework 4.5 から .NET Framework 4 に変更するだけでは、この問題を解決できません。 ターゲット フレームワークを以前のフレームワーク バージョンに変更しても、プロジェクトはそれ以降のフレームワーク バージョンのアセンブリへの参照を持ち、プロジェクトは実行されません。 これらの参照を手動で変更するか、.NET Framework 4 以前を対象とする新しいプロジェクトを作成する必要があります。 詳細については、Web サイトを対象とする .NET Framework に関して参照してください。

中程度の信頼エラー

シナリオ

運用環境でアプリケーションを実行すると、中程度の信頼に関連するエラーが発生します。

考えられる原因と解決策

多くのサード パーティのホスティング プロバイダーは、中程度の信頼で Web サイトを実行します。つまり、実行を許可されていないことがいくつかあります。 たとえば、アプリケーション コードは Windows レジストリにアクセスできません。また、アプリケーションのフォルダー階層の外部にあるファイルの読み取りまたは書き込みを行うことはできません。 既定では、アプリケーションはローカル コンピューター上で完全な信頼で実行されます。つまり、運用環境に配置すると、アプリケーションが失敗する可能性があります。

トラブルシューティングを行うために、ローカル IIS 環境で中程度の信頼で実行するようにアプリケーションを構成できます。 これを行うには、この例に示すように、アプリケーション Web.config ファイルを開き、system.web 要素に trust 要素を追加します。

<configuration>
  <!-- Settings -->
  <system.web>
    <trust level="Medium" />
    <!-- Settings -->
  </system.web>
</configuration>

アプリケーションは、ローカル コンピューター上でも IIS で中程度の信頼で実行されるようになります。

Azure は中程度の信頼を必要としないため、Azure App Service に配置する場合は、これを行わないでください。 このチュートリアルが 2012 年 2 月に作成されている時点で、このメソッドを使用してアプリケーションを中程度の信頼で実行すると、Azure でエラーが発生します。

Entity Framework Code First Migrations を使用していて、アプリケーションを中程度の信頼で実行するホスティング プロバイダーに配置する場合は、バージョン 5.0 以降がインストールされていることを確認してください。 Entity Framework バージョン 4.3 では、データベース スキーマを更新するには、移行に完全な信頼が必要です。

HTTP 404.17 見つかりませんエラー

シナリオ

IIS の開発用コンピューターで配置済みサイトを実行すると、サーバーが Default.aspx を処理できないことを報告する次のエラー メッセージが表示されます。

HTTP エラー 404.17 - 未検出

要求されたコンテンツはスクリプトのように見え、静的ファイル ハンドラーによって提供されません。

考えられる原因と解決策

ASP.NET 4.5 がコンピューターにインストールされていない可能性があります。 ASP.NET 4.5 をインストールする方法については、このシリーズの「テスト環境としての IIS への配置」チュートリアルの手順を参照してください。