IIS 展開における構成エラーについて
Blazor プロジェクトを IIS にデプロイするプロセスはスムーズですが、診断が難しいエラーが発生する場合があります。開発者が遭遇する一般的な問題の 1 つは、 エラー 500.19これは通常、設定ページに問題があることを示します。このエラーにより、アプリケーションが正しく起動できなくなります。
エラー 500.19 は通常、 web.config ファイルを確認しても、エラーが解決しない場合があります。構成自体に何も問題がないように見える場合、この状況はイライラする可能性があります。開発者は、Blazor アプリケーションを展開しようとするときに、特にエラー メッセージがあいまいに見える場合に、この問題に直面することがよくあります。
構成の問題以外にも、根本的な権限の問題や、サーバー上のコンポーネントが欠落している可能性があります。たとえば、IIS 権限の問題や環境の構成が間違っている場合にも、このエラーが発生する可能性があります。必要なモジュールと権限がすべて適切に配置されていることを確認することは、展開を成功させるために重要です。
この記事では、トラブルシューティングのために実行できる手順について説明します。 エラー 500.19 構成の問題を解決します。 web.config ファイルを調べ、権限を確認し、サーバーの環境をチェックすることで、問題の根本原因を特定できます。
指示 | 使用例 |
---|---|
<aspNetCore> | このタグは ASP.NET Core アプリケーションに固有であり、実行可能ファイルへのパス、ログ構成、ホスティング モデル (インプロセスまたはアウトプロセス) などの設定を定義するために web.config ファイルで使用されます。これにより、Blazor サーバー側アプリケーションを IIS に統合できます。 |
stdoutLogEnabled | この属性は、 |
icacls | ファイル システムのアクセス許可を構成するために使用される Windows コマンド。このコンテキストでは、必要な読み取り/書き込みアクセス許可を IIS_IUSRS グループに付与するために使用され、Blazor アプリが必要なディレクトリに確実にアクセスできるようにします。 |
Install-WindowsFeature | この PowerShell コマンドは、Windows Server に機能をインストールします。この場合、IIS で ASP.NET Core アプリケーションを実行するために必要な AspNetCoreModuleV2 などの IIS コンポーネントがインストールされます。 |
Get-WebGlobalModule | この PowerShell コマンドは WebAdministration モジュールの一部であり、IIS で使用可能なすべてのグローバル モジュールを一覧表示します。ここでは、AspNetCoreModuleV2 がインストールされていることを確認するために使用されます。これは、IIS で Blazor アプリケーションを実行するために重要です。 |
AreAccessRulesProtected | このメソッドは .NET の DirectorySecurity クラスの一部であり、ディレクトリのアクセス許可が保護されているか (継承不可か) どうかを確認します。これは、アプリケーションのディレクトリ権限が正しく構成されていることを検証するために単体テストで使用されます。 |
stdoutLogFile | この属性は、標準出力ログが保存されるパスを定義します。これは、Blazor アプリが IIS 内で実行されるときにランタイム エラーをキャプチャするため、展開の問題のデバッグに不可欠です。 |
DirectorySecurity | ファイル システム ディレクトリのアクセス制御と監査セキュリティを管理するために使用される .NET クラス。この例では、単体テスト中に適切なアクセス制御リスト (ACL) が Blazor アプリ ディレクトリに適用されていることを確認するために使用されます。 |
Write-Host | コンソールにメッセージを出力する PowerShell コマンド。この場合、IIS のアクセス許可やモジュールのインストール ステータスを確認または変更するときにフィードバックが提供され、展開プロセス中のリアルタイムのデバッグに役立ちます。 |
Blazor デプロイメント エラー スクリプトについて
提供される最初のスクリプトは、システム内の潜在的な構成ミスを処理するように設計されています。 web.config ファイルが原因で、IIS で 500.19 エラーが発生することがよくあります。ここで重要なコンポーネントは `
2 番目のソリューションでは、PowerShell を使用して考えられる権限の問題に対処します。の icacls コマンドは、IIS_IUSRS グループに必要なアクセス許可を付与します。これは、Blazor アプリがそのディレクトリとファイルにアクセスするために不可欠です。これらのアクセス許可がないと、サーバーはアプリケーションの実行をブロックし、500.19 などのエラーが発生する可能性があります。 PowerShell を使用すると、これらのアクセス許可をバッチ スクリプトですばやく設定でき、必要なすべてのユーザーとグループがアプリのフォルダーへの読み取りおよび書き込みアクセス権を確実に持つことができます。
3 番目のソリューションは、Blazor 構成内で stdout ログを有効にすることでデバッグに重点を置いています。有効化 stdoutLogEnabled 実行時エラーを指定したファイルに記録することで、エラーを捕捉するのに役立ちます。ブラウザや IIS エラー ログでは表示されない多くのエラーがここで検出される可能性があるため、この方法は展開中に重要です。 `./logs/stdout` フォルダー内のログをチェックすることで、開発者は、アプリケーション コードに関連しているか、環境構成の問題に関連しているかにかかわらず、特定の問題を追跡できます。
最後に、4 番目のスクリプトは、 AspNetCoreModuleV2 IISにインストールされています。これは、PowerShell を使用して行われます。 Get-WebGlobalModule このコマンドは、サーバーにインストールされているすべてのグローバル モジュールを一覧表示します。モジュールが見つからない場合は、後続のコマンド、 Windows 機能のインストール、必要な IIS コンポーネントをインストールします。これにより、Blazor アプリケーションが適切に実行するために必要なすべての依存関係が確実に確保されます。これらのモジュールがないと、Blazor アプリは IIS で機能できず、500.19 などの構成エラーが発生します。単体テスト スクリプトは、ディレクトリのアクセス許可と IIS モジュールの設定が正しく適用されていることを確認し、展開プロセスに追加の検証層を提供します。
解決策 1: web.config を変更して Blazor 展開エラーを解決する
ASP.NET Core 構成を使用し、IIS が正しく設定されていることを確認します。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="" verb="" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\BlazorApp2.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
<!--Ensure the right handler is mapped, and the processPath is correct.-->
解決策 2: IIS の権限の問題を解決する
PowerShell を使用して、IIS_IUSRS グループに正しいアクセス許可があることを確認します。
# PowerShell script to set proper permissions for the application directory
param (
[string]$path = "C:\inetpub\wwwroot\BlazorApp"
)
# Grant read and write permissions to IIS_IUSRS
icacls $path /grant "IIS_IUSRS:(OI)(CI)RX"
icacls $path /grant "IIS_IUSRS:(OI)(CI)(F)"
Write-Host "Permissions set successfully on $path"
# Make sure this script is run with administrative privileges.
解決策 3: 標準出力ログを使用してアプリケーションをデバッグする
ASP.NET Core の標準出力ログを使用してエラーの詳細をキャプチャします。
<configuration>
<system.webServer>
<aspNetCore processPath=".\BlazorApp2.exe" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</configuration>
# After enabling logging, ensure that the "logs" folder exists in the application directory.
# Check the logs for further information on what's causing the deployment issue.
# Disable stdout logging in production to avoid performance issues.
解決策 4: IIS モジュールが正しくインストールされていることを確認する
正しい IIS モジュールが Blazor アプリケーションに対して有効になっていることを確認します。
# PowerShell script to check if IIS modules are installed
Import-Module WebAdministration
$modules = Get-WebGlobalModule | Where-Object {$_.Name -eq "AspNetCoreModuleV2"}
if ($modules -eq $null) {
Write-Host "AspNetCoreModuleV2 is missing. Installing the module..."
Install-WindowsFeature -Name Web-Asp-Net45
} else {
Write-Host "AspNetCoreModuleV2 is already installed."
}
解決策 5: 構成と権限の単体テスト
構成のバックエンド検証に NUnit を使用した単体テストのセットアップ。
using NUnit.Framework;
namespace BlazorApp.Tests
{
public class DeploymentTests
{
[Test]
public void TestPermissionsAreSetCorrectly()
{
var directory = "C:\\inetpub\\wwwroot\\BlazorApp";
var permissions = new System.Security.AccessControl.DirectorySecurity(directory, System.Security.AccessControl.AccessControlSections.All);
Assert.IsTrue(permissions.AreAccessRulesProtected == false, "Permissions are incorrect!");
}
}
}
# This unit test validates whether the directory permissions are correctly set.
Blazor デプロイのための IIS 構成の調査
Blazor プロジェクトを IIS にデプロイする場合、よくある問題の 1 つは、IIS モジュールの不適切な構成です。 AspNetCoreModuleV2。このモジュールは、IIS 内で .NET Core アプリケーションをホストする役割を担っており、正しくインストールする必要があります。存在しない場合、500.19 などのエラーが発生する可能性があります。 Blazor アプリが適切に機能するには、このモジュールの正しいバージョンが有効になっていることを確認することが重要です。さらに、ホスティング モデルが「インプロセス」または「アウトプロセス」に設定されていることを確認することが、これらの問題を解決する鍵となる可能性があります。
500.19 エラーを引き起こす可能性のあるもう 1 つの要因は、ターゲット環境に必要なコンポーネントが不足していることです。たとえば、適切な .NET ランタイム バージョンがインストールされていないサーバーで Blazor アプリを実行すると、構成の問題が発生する可能性があります。サーバーのランタイムが Blazor アプリと同じであることを確認することは、展開を成功させるために重要です。さらに、管理者は、IIS のサイト、特に .NET Core を使用するように構成されたサイトに正しいアプリケーション プールが使用されていることも確認する必要があります。
構成の問題に加えて、フォルダーのアクセス許可も展開プロセスで重要な役割を果たします。に権限を付与したにもかかわらず、 IIS_IUSRS グループに追加のセキュリティ ルールを追加すると、特定のファイルまたはディレクトリへのアクセスが禁止される場合があります。 PowerShell や IIS マネージャーなどのツールを使用してこれらのアクセス許可を確認および変更すると、Blazor アプリがランタイム操作に必要なファイルに十分にアクセスできるようになります。このエラーのトラブルシューティングには、モジュールのセットアップ、ランタイムの互換性、およびアクセス許可の組み合わせが重要です。
IIS Blazor の展開の問題に関するよくある質問
- IIS のエラー 500.19 は何を意味しますか?
- エラー 500.19 は、無効な構成が存在することを示します。 web.config ファイルが原因で、IIS が要求を処理できなくなります。
- Blazor デプロイにおける AspNetCoreModuleV2 とは何ですか?
- の AspNetCoreModuleV2 は、IIS 内で .NET Core アプリケーションをホストするための主要なモジュールです。 Blazor アプリケーションを IIS と統合し、ネイティブに実行できるようにします。
- トラブルシューティングのために標準出力ログを有効にするにはどうすればよいですか?
- 標準出力ログを有効にするには、次のように設定する必要があります。 stdoutLogEnabled 真実に web.config ファイル。これは、展開中の実行時エラーを捕捉するのに役立ちます。
- IIS が Blazor アプリを実行するにはどのようなアクセス許可が必要ですか?
- IIS_IUSRS グループには、アプリケーションのディレクトリに対する読み取り、書き込み、および実行のアクセス許可が必要です。これは次を使用して構成できます。 icacls。
- 必要な .NET ランタイムがサーバーにインストールされているかどうかを確認するにはどうすればよいですか?
- 次のコマンドを実行して、インストールされている .NET ランタイムを確認できます。 dotnet --info サーバー上で。これにより、利用可能なすべてのランタイム バージョンが表示されます。
Blazor 展開エラーの解決
結論として、500.19 などの Blazor 展開エラーのトラブルシューティングには、両方のコンポーネントを徹底的に検査する必要があります。 web.config ファイルとサーバー環境。正しいモジュールが IIS にインストールされていることを確認し、アクセス許可を確認することが重要です。
さらに、ログ記録を有効にし、PowerShell を使用して権限を確認すると、隠れた問題が明らかになる可能性があります。これらの各領域に慎重に対処することで、構成エラーを排除し、Blazor アプリケーションを正常にデプロイできます。
Blazor 展開エラーの解決策に関する参考資料とリソース
- IIS 展開の問題の解決に関する公式ドキュメントについては、次のサイトを参照してください。 IIS での Microsoft ASP.NET Core ホスティング 。
- web.config ファイルの構成について詳しくは、次を参照してください。 IIS 構成リファレンス 。
- 権限に関する役立つガイドと、IIS 権限を構成するための icacls の使用方法については、次のサイトを参照してください。 Microsoft ICACLS コマンド リファレンス 。