質問: Blazor CRUDの例をローカルサーバーに公開しました。ウェブサイトは正常に動作していますが、フェッチデータページに行くとHTTPエラー500が表示されます。私はVisual Studio上で実行するとすべてうまく動作しますが、IISサーバーはうまく動作します。コンテキストファイルに接続文字列があります。また、アプリケーションプールの設定ページで接続文字列を編集しましたが、まだ動作しません。 これは私がコンテキストファイルで使用しているコードです: ``` optionsBuilder.UseSqlServer(@"Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=master;Trusted_Connection=True;"); ``` 私はまた、この接続文字列をIIS用に使用します。 ![ここに画像の説明を入力](https://i.stack.imgur.com/mTB0Y.png)
回答: 答えは、2つの異なるLocalDBインスタンスがここにあることです。 Windowsサービスとして実行されているSQL Server Expressインスタンスとは異なり、LocalDBインスタンスはユーザープロセスとして実行されています。異なるWindowsユーザーがLocalDBに接続すると、それぞれのLocalDBプロセスが起動します。 Visual Studioから(localdb)\ v11.0に接続すると、LocalDBインスタンスが開始され、Windowsアカウントとして実行されます。しかし、ApplicationPoolIdentityとしてIISで実行されているWebアプリケーションがLocalDBに接続しているとき、別のLocalDBインスタンスが起動され、ApplicationPoolIdentityとして実行されています!実際には、Visual StudioとWebアプリケーションの両方が同じLocalDB接続文字列を使用していても、異なるLocalDBインスタンスに接続しています。明らかに、LocalDBインスタンスのVisual Studioから作成されたデータベースは、WebアプリケーションのLocalDBインスタンスでは使用できません。 簡単な修正は、LocalDBではなくSQL Server Expressを使用しています 詳細 -