1
0

More than 1 year has passed since last update.

ASP.Net Core 公式チュートリアル実施中における躓きと解決策

Last updated at Posted at 2022-03-12

チュートリアル開始時点の筆者状況

次年度よりASP.Netを用いたWebアプリケーション開発プロジェクトへの参画が決まっている状態。
C#を用いた業務アプリケーションのMVVM開発経験はあるもののMVC開発の経験は無いため、
概要から学習しておきたいと思い公式チュートリアルに手を出し始める。

実施対象チュートリアル
https://docs.microsoft.com/ja-jp/aspnet/core/?view=aspnetcore-6.0

チュートリアル: ASP.NET Core の概要

「アプリを実行する」の躓き

公式チュートリアルでは次のコマンドを実行し、アプリが開始されたらhttps://localhost:5001を参照するよう記載されているが、
筆者環境ではhttps://localhost:7298でアプリが開始された。

cd aspnetcoreapp
dotnet watch run

「アプリを実行する」の解決策

aspnetcoreapp\Properties\launchSettings.jsonに以下の記載がある。

  "profiles": {
    "aspnetcoreapp": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://localhost:7298;http://localhost:5012",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },

上記記載の内applicationUrlについて、

      "applicationUrl": "https://localhost:5001;http://localhost:5000",

と修正したところ、https://localhost:5001でアプリが開始されるようになった。
何故初期設定が7298となっていたのかは不明のため、今後調査の必要あり。

パート 2: ASP.NET Core で Razor ページ アプリにモデルを追加する

「EF の移行機能を使用して初期データベース スキーマを作成する」の躓き

PMCで次のコマンドを入力する工程で、Update-Databaseでエラーが発生してしまう。

Add-Migration InitialCreate
Update-Database

発生するエラー文は以下の通り。

Microsoft.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SNI_PN11, error: 50 - Local Database Runtime error occurred. 自動インスタンスを作成できません。エラーの詳細については、Windows アプリケーション イベント ログを参照してください。
)

イベントビューアーには以下のエラーログが登録されていた。

Product: Microsoft SQL Server 2019 LocalDB  -- Error 1706. An installation package for the product Microsoft SQL Server 2019 LocalDB  cannot be found. Try the installation again using a valid copy of the installation package 'SqlLocalDB.msi'.

エラー文を読む限りでは、Microsoft SQL Server2019 LocalDBが見つからないため、PMCのコマンドが実行できていない模様。
"SqlLocalDB.msi"を探してインストールして再度「Update-Database」コマンドを実行すると、イベントビューアーに以下のエラーが表示されるようになった。

Windows API 呼び出し RegOpenKeyExW はエラー コードを返しました: 2。Windows システム エラー メッセージ: 指定されたファイルが見つかりません。
。行: 1035 での応答。 
LocalDB 親インスタンスのバージョンが無効です: MSSQL14E.LOCALDB

どうやらRegOpenKeyExWというWin32APIの呼び出し中にエラーが発生している模様。
「コンピューター\HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server\UserInstances」にLocalDBの情報が登録されているが、
このレジストリがうまく読み取れていないものと思われる。

「EF の移行機能を使用して初期データベース スキーマを作成する」の解決策

WindowsTerminalで、以下のコマンドを実行しインスタンスを作成後、再度「Update-Database」を実行することで解決。

>sqllocaldb delete MSSQLLocalDB
>sqllocaldb create MSSQLLocalDB
1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0