【问题标题】:ASP.NET Core and EF application stops at initialising Database contextASP.NET Core 和 EF 应用程序在初始化数据库上下文时停止
【发布时间】:2019-03-31 01:29:15
【问题描述】:

我有 .NET C# 解决方案

  1. ASP.NET Core 项目参考
  2. 包含 EF 的控制台应用程序。

EF 是数据库优先模式。

每当我运行应用程序调试时,我都可以跟踪到

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated from a template.
//
//     Manual changes to this file may cause unexpected behavior in your application.
//     Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace ProductApi.Database
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;

    public partial class ProductsEntities1 : DbContext
    {
        public ProductsEntities1()
            : base("name=ProductsEntities1")
        {
        }

:base("name=ProductsEntities1") 然后它停在那里并抛出错误:

2019-03-31 12:21:20.6795|1|ERROR|Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware|An unhandled exception has occurred while executing the request.  Newtonsoft.Json.JsonSerializationException: Error getting value from 'Result' on 'System.Threading.Tasks.Task`1[ProductApi.Responses.ProductsResponse]'.

---> System.AggregateException: One or more errors occurred. (The type initializer for 'System.Data.Entity.Internal.AppConfig' threw an exception.) 
---> System.TypeInitializationException: The type initializer for 'System.Data.Entity.Internal.AppConfig' threw an exception. 
---> System.IO.FileNotFoundException: Could not load file or assembly 'System.Configuration.ConfigurationManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified.    at System.Data.Entity.Internal.AppConfig..ctor()    at System.Data.Entity.Internal.AppConfig..cctor()    --- End of inner exception stack trace ---    at System.Data.Entity.Internal.LazyInternalConnection..ctor(DbContext context, String nameOrConnectionString)    at System.Data.Entity.DbContext..ctor(String nameOrConnectionString)    at ProductApi.Database.ProductsEntities1..ctor() in E:\work\ProductApi\ProductApi.Database\ProductsModel.Context.cs:line 19    at ProductApi.Database.ProductRepository..ctor() in E:\work\ProductApi\ProductApi.Database\ProductRepository.cs:line 14    at ProductApi.Queries.Handlers.ProductsHandler.Handle(ProductsQuery request, CancellationToken cancellationToken) in E:\work\ProductApi\ProductApi\Queries\Handlers\ProductsHandler.cs:line 16    at MediatR.Pipeline.RequestPostProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)    at MediatR.Pipeline.RequestPreProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)    --- End of inner exception stack trace ---    at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)    at Newtonsoft.Json.Serialization.ExpressionValueProvider.GetValue(Object target)    --- End of inner exception stack trace ---    at Newtonsoft.Json.Serialization.ExpressionValueProvider.GetValue(Object target)    at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues(JsonWriter writer, Object value, JsonContainerContract contract, JsonProperty member, JsonProperty property, JsonContract& memberContract, Object& memberValue)    at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)    at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty)    at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType)    at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType)    at Newtonsoft.Json.JsonSerializer.Serialize(JsonWriter jsonWriter, Object value)    at Microsoft.AspNetCore.Mvc.Formatters.JsonOutputFormatter.WriteObject(TextWriter writer, Object value)    at Microsoft.AspNetCore.Mvc.Formatters.JsonOutputFormatter.WriteResponseBodyAsync(OutputFormatterWriteContext context, Encoding selectedEncoding)    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeResultAsync(IActionResult result)    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResultFilterAsync[TFilter,TFilterAsync]() at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResultExecutedContext context)    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted)    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeResultFilters() at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter() at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync() at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()    at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)    at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)    at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)    at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)    at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context) 2019-03-31 12:21:20.7090|2|WARN|Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware|The response has already started, the error page middleware will not be executed.  2019-03-31 12:21:20.7372|13|ERROR|Microsoft.AspNetCore.Server.Kestrel|Connection id "0HLLLES9AKJ2S", Request id "0HLLLES9AKJ2S:00000002": An unhandled exception was thrown by the application. Newtonsoft.Json.JsonSerializationException: Error getting value from 'Result' on 'System.Threading.Tasks.Task`1[ProductApi.Responses.ProductsResponse]'.
---> System.AggregateException: One or more errors occurred. (The type initializer for 'System.Data.Entity.Internal.AppConfig' threw an exception.) ---> System.TypeInitializationException: The type initializer for 'System.Data.Entity.Internal.AppConfig' threw an exception. ---> System.IO.FileNotFoundException: Could not load file or assembly 'System.Configuration.ConfigurationManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The system cannot find the file specified.    at System.Data.Entity.Internal.AppConfig..ctor()    at System.Data.Entity.Internal.AppConfig..cctor()    --- End of inner exception stack trace ---    at System.Data.Entity.Internal.LazyInternalConnection..ctor(DbContext context, String nameOrConnectionString)    at System.Data.Entity.DbContext..ctor(String nameOrConnectionString)    at ProductApi.Database.ProductsEntities1..ctor() in E:\work\ProductApi\ProductApi.Database\ProductsModel.Context.cs:line 19    at ProductApi.Database.ProductRepository..ctor() in E:\work\ProductApi\ProductApi.Database\ProductRepository.cs:line 14    at ProductApi.Queries.Handlers.ProductsHandler.Handle(ProductsQuery request, CancellationToken cancellationToken) in E:\work\ProductApi\ProductApi\Queries\Handlers\ProductsHandler.cs:line 16    at MediatR.Pipeline.RequestPostProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)    at MediatR.Pipeline.RequestPreProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)    --- End of inner exception stack trace ---    at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)    at Newtonsoft.Json.Serialization.ExpressionValueProvider.GetValue(Object target)    --- End of inner exception stack trace ---    at Newtonsoft.Json.Serialization.ExpressionValueProvider.GetValue(Object target)    at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CalculatePropertyValues(JsonWriter writer, Object value, JsonContainerContract contract, JsonProperty member, JsonProperty property, JsonContract& memberContract, Object& memberValue)    at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)    at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty)    at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type objectType)    at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value, Type objectType)    at Newtonsoft.Json.JsonSerializer.Serialize(JsonWriter jsonWriter, Object value)    at Microsoft.AspNetCore.Mvc.Formatters.JsonOutputFormatter.WriteObject(TextWriter writer, Object value)    at Microsoft.AspNetCore.Mvc.Formatters.JsonOutputFormatter.WriteResponseBodyAsync(OutputFormatterWriteContext context, Encoding selectedEncoding)    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeResultAsync(IActionResult result)    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResultFilterAsync[TFilter,TFilterAsync]() at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResultExecutedContext context)    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted)    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeResultFilters() at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter() at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)    at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync() at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()    at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)    at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)    at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)    at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)    at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)    at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)    at Microsoft.AspNetCore.Server.IISIntegration.IISMiddleware.Invoke(HttpContext httpContext)    at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)

这是我的数据库的连接字符串:

<add name="ProductsEntities1" connectionString="metadata=res://*/ProductsModel.csdl|res://*/ProductsModel.ssdl|res://*/ProductsModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=DESKTOP-IAJ5HKV\SQLEXPRESS;initial catalog=Products;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

这个错误信息太笼统了,我什至不知道从哪里开始。

【问题讨论】:

    标签: c# .net entity-framework asp.net-core


    【解决方案1】:

    尝试像这样读取您的连接字符串,而不是使用 ConfigurationManager:

    var connectionString = Configuration["connectionStrings:ProductsEntities1"];

    我不确定该连接字符串是否有效。您可以查看https://www.connectionstrings.com/sql-server/ 了解更多信息。

    【讨论】:

    • 嗨 Mihaimyh,感谢您的回复。我应该将您的代码放在哪里?
    • 您在哪里使用 ConfigurationManager?我相信在Startup.csConfigureServices 方法中。
    • 我没有使用 ConfigurationManager,至少没有直接使用它。这是我的实体框架在到达我上面提到的那一行时崩溃了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 2016-11-06
    • 2018-07-23
    • 2018-09-27
    相关资源
    最近更新 更多