Entity Frameworkコア1.1.1 ArgumentNullException接続文字列に対してスローされる

asp.net-core asp.net-mvc entity-framework entity-framework-core

質問

私は、 "パラメータ名:connectionString StackTrace:パラメータ名:connectionString"として読み取る例外のメッセージプロパティでArgumentNullExceptionがスローされているEFコアbsaedアプリケーションでASP.NETコアMVCにコントローラを追加する際に問題があります。

私のアプリケーションはでトム・ダイクストラとリック・アンダーソンdocs.microsoft.com上のContoso大学のチュートリアルに従っているhttps://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro ます。https:// docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro

次の設定でAdd Controllerダイアログを使用して、StudentクラスのAdd Scaffoldダイアログを通じてEntity Frameworkを使用して、ビューを持つMVC Controllerを選択して、スキャフォールディングコントローラを追加しようとすると、

Model class:            Student (ContosoUniversity.Models)
Data context class:     SchoolContext (ContosoUniversity.Data)
Views:                  [All of the following are checked]
                        Generate views
                        Reference script libraries
                        Use a layout page 
                        (The layout textbox is left empty as it is set in a Razor _viewstart file)
Controller name:        StudentController

[Add Controller]ダイアログの[Add]ボタンをクリックすると、コントローラの足場を追加するためのビルドプロセスの次の出力が表示されます。

C:¥Program Files¥dotnet¥dotnet.exe aspnet-codegenerator --project "C:¥work¥NET¥ContosoUniversity¥ContosoUniversity¥ContosoUniversity.csproj" - no-buildコントローラ--force --controllerName StudentsController - モデルContosoUniversity .Models.Student --dataContext ContosoUniversity.Data.SchoolContext --relativeFolderPathコントローラ--referenceScriptLibraries --useDefaultLayoutコマンドライン:--project C:\ work \ NET \ ContosoUniversity \ ContosoUniversity \ ContosoUniversity.csproj --no-buildコントローラ - (Microsoft Corporation、その関連会社またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。全著作権所有。コマンドライン:--no-dispatch --port-number 5716 --project C:\ work \ NET \ ContosoUniversity \ ContosoUniversity \ ContosoUniversity.csproj - 作成しないコントローラ--force --controllerName StudentsController - モデルContosoUniversity.Models .Student --dataContext ContosoUniversity.Data.SchoolContext --relativeFolderPathコントローラ--referenceScriptLibraries --useDefaultLayout --dispatcher-version 1.0.0-rtm-10308ジェネレータ 'コントローラ'の検索...ジェネレータ 'コントローラ'の実行...メモリ内のアプリケーションをコンパイルしようとしていますモデルとDbContextのEntityFrameworkメタデータを調べようとしました。Student Valueはnullにできません.Valueはnullにはできません。

パラメータ名:connectionString StackTrace:パラメータ名:connectionString

Microsoft.VisualStudio.Web.CodeGeneration.ActionInvoker.b__6_0()のMicrosoft.EntityFrameworkCore.Utilities.Check.NotEmpty(文字列値、String parameterName)

Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(String [] args)のMicrosoft.EntityFrameworkCore.SqlServerDbContextOptionsExtensions.UseSqlServer(DbContextOptionsBuilder optionsBuilder、String connectionString、Action`1 sqlServerOptionsAction)

Microsoft.VisualStudio.Web.CodeGeneration.CodeGenCommand.Execute(String [] args)のContosoUniversity.Startup.b__4_0(DbContextOptionsBuilderオプション)

Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite、ServiceProviderプロバイダー)、Microsoft.Extensions.DependencyInjection.ServiceProviderのMicrosoft.Extensions.DependencyInjection.EntityFrameworkServiceCollectionExtensions.DbContextOptionsFactory [TContext](IServiceProvider applicationServiceProvider、Action`2 optionsAction) Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProviderプロバイダー、タイプserviceType)のMicrosoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService [T](IServiceProviderプロバイダー)のMicrosoft.Extensions.DependencyInjectionの<> c__DisplayClass16_0.b__0(ServiceProviderプロバイダー)。 Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitClosedIEnumerable(ClosedIEnumerableCallSi)でServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite scopedCallSite、ServiceProviderプロバイダー) Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitTransient(TransientCallSite、TransientCallSite、ServiceProviderプロバイダー)、Microsoft.Extensions.DependencyInjection.ServiceProvider。<> c__DisplayClass16_0.b__0(ServiceProviderプロバイダー)(Microsoft.Extensions.DependencyInjection)を参照してください。 Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.FindContextTypes()(Microsoft.EntityFrameworkCore.Design.Internal)のMicrosoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService [T](IServiceProviderプロバイダー)のServiceProviderServiceExtensions.GetRequiredService(IServiceProviderプロバイダー、タイプserviceType)。 DbContextOperations.FindContextType(String name)Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(String contextType)(Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore.EntityFrameworkServices.TryCreateContextUsingAppCo) de(タイプdbContextType、タイプstartupType)ランタイム00:00:17.43

appsettings.json内の私の接続文字列の定義は、(localdbを使って)以下のようになります。

"ConnctionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=ContosoUniversity1;Trusted_Connection=True;MultipleActiveResultSets=true"
}, 

StartupクラスのConfigureServices()メソッドの実装は、次のようになります。

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddDbContext<SchoolContext>(options =>
      options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

    services.AddMvc();
}

SQL Server Express LocalDBを使用する代わりに、既存のSQL ServerデータベースにContosoUniversity1という名前のテーブルを定義せずに接続し、同じArgumentNullExceptionを受け取るような接続文字列設定を試してみました。コントローラを作成し、IISExpressを使用してMVC Webアプリケーションを実行する場合

"ConnctionStrings": {
    "DefaultConnection": "Server=Skittles;Database=ContosoUniversity1;Trusted_Connection=True;MultipleActiveResultSets=true"
},

私はVisual Studio Community 2017の実際のリリースを、以下のNuGetパッケージ参照を使用してASP.NET CoreとEntity Framework Core(.csprojファイルのPackageReferences:

<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="1.1.1"/>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.1" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.1.0" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="1.1.0" />

どのように私はこの問題を解決することができます上の提案やアイデアは大いに感謝します。

あなたの時間、助けと忍耐力に感謝します。

人気のある回答

起動をデバッグし、 Configuration.GetConnectionString("DefaultConnection")が実際に値を返すことを確認します。それは最初に確認する場所です。

設定ファイルで、キーの間違ったConnctionStringsが綴られているため、 nullことがConnctionStrings

変化する

"ConnctionStrings": {...
}, 

"ConnectionStrings": {...
}, 


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ