2015-12-17 3 views
0

У меня возникла проблема при создании моей базы данных в приложении MVC 6 ASP.NET. Когда я пытаюсь добавить миграции в cmd, выполнив «dnx ef migrations add initial», я получаю исключение «Значение не может быть NULL. Имя параметра: connectionString» (он переводится с немецкого языка, поэтому на английском языке буквальный перевод может быть другим)ASP.NET Entity Framework 7 config.json ConnectionString

Я искал всю сеть, но я не мог найти ничего, что помогло.

Это мой config.json:

{ 
    "AppSettings": { 
     "SiteTitle": "Chronicus" 
    }, 
    "Data": { 
     "ConnectionString": "Server=(localdb)\\MSSQLLocalDB;Database=Chronicus;Trusted_Connection=True;MultipleActiveResultSets=true" 
    } 
    } 

Это мой Startup.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Threading.Tasks; 
using Chronicus.models; 
using Microsoft.AspNet.Builder; 
using Microsoft.AspNet.Hosting; 
using Microsoft.AspNet.Http; 
using Microsoft.Data.Entity; 
using Microsoft.Extensions.Configuration; 
using Microsoft.Extensions.Logging; 
using Microsoft.Extensions.DependencyInjection; 
using Microsoft.Extensions.PlatformAbstractions; 
using Microsoft.AspNet.Identity.EntityFramework; 


namespace Chronicus 
{ 
    public class Startup 
    { 

     public IConfiguration Configuration { get; set; } 

     public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv) 
     { 

      // Setup configuration sources. 
      var builder = new ConfigurationBuilder() 
       .SetBasePath(appEnv.ApplicationBasePath) 
       .AddJsonFile("config.json") 
       .AddEnvironmentVariables(); 

      Configuration = builder.Build(); 
     } 

     // This method gets called by the runtime. Use this method to add services to the container. 
     // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940 
     public void ConfigureServices(IServiceCollection services) 
     { 
      services.AddMvc(); 

      services.AddEntityFramework() 
       .AddSqlServer() 
       .AddDbContext<ChronicusContext>(options => options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"])); 
     } 

     // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 
     public void Configure(IApplicationBuilder app) 
     { 

      /* 
      // auto generated code 
      app.UseIISPlatformHandler(); 

      app.Run(async (context) => 
      { 
       await context.Response.WriteAsync("Hello World!"); 
      }); 

      */ 
      app.UseDefaultFiles(); 
      app.UseStaticFiles(); 
      app.UseMvc(); 
     } 

     // Entry point for the application. 
     public static void Main(string[] args) => WebApplication.Run<Startup>(args); 
    } 
} 

Это мой project.json

{ 
    "version": "1.0.0-*", 
    "compilationOptions": { 
    "emitEntryPoint": true 
    }, 

    "dependencies": { 
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final", 
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final", 
    "Microsoft.AspNet.Server.WebListener": "1.0.0-rc1-final", 
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta5", 
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final", 
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final", 
    "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final", 
    "Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final", 
    "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-rc1-final", 
    "Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta4", 
    "Microsoft.Framework.CodeGenerators.Mvc": "1.0.0-beta5", 
    "Microsoft.Framework.Logging": "1.0.0-beta8", 
    "Microsoft.Framework.Logging.Console": "1.0.0-beta8", 
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final", 
    "EntityFramework.Commands": "7.0.0-rc1-final", 
    "Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final", 
    "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final", 
    "EntityFramework.Core": "7.0.0-rc1-final" 
    }, 

    "commands": { 
    "web": "Microsoft.AspNet.Server.Kestrel --server.urls http://localhost:5000", 
    "ef": "EntityFramework.Commands" 
    }, 

    "frameworks": { 
    "dnx451": { }, 
    "dnxcore50": { } 
    }, 

    "exclude": [ 
    "wwwroot", 
    "node_modules" 
    ], 
    "publishExclude": [ 
    "**.user", 
    "**.vspscc" 
    ] 
} 

Кто-нибудь знает, как почини это? Спасибо!

ответ

1

Если у вас нет опечатки в вашем первом блоке, это, похоже, недействительно json, так как отсутствует открытие {.

{ 
    "AppSettings": { 
     "SiteTitle": "Chronicus" 
    }, 
    "Data": { 
     "ConnectionString": "Server=(localdb)\\MSSQLLocalDB;Database=Chronicus;Trusted_Connection=True;MultipleActiveResultSets=true" 
    } 
    } 
} 

Должно быть

{ 
    "AppSettings": { 
     "SiteTitle": "Chronicus" 
    }, 
    "Data": { 
     "ConnectionString": "Server=(localdb)\\MSSQLLocalDB;Database=Chronicus;Trusted_Connection=True;MultipleActiveResultSets=true" 
    } 
    } 

Обратите внимание на два отверстия {

Редактировать

Это выглядит как ваш config.json не может быть правильным. Пожалуйста, отформатируйте конфигурации, используя следующий пример

{ 
    "AppSettings": { 
     "SiteTitle": "WebApplication2", 
    }, 
    "Data": { 
     "DefaultConnection": { 
      "ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=aspnet5-WebApplication1-414415dc-a108-49f3-a5e3-fdc4cf24ef96;Trusted_Connection=True;MultipleActiveResultSets=true" 
     } 
    } 
} 
+0

Это было просто неправильно скопировал так это не решит проблему, но все же спасибо за глядя на мою проблему , – davidrue

+1

Теперь у вас слишком много '{' и '}'. Удалите первый и последний. – DavidG

+0

@davidrue Вы можете подтвердить, что каждый из файлов конфигурации .json' действителен? Если вам нужно, вы можете легко найти JSON валидаторы онлайн. – Seany84

0

Сво неправильно JSON, установить конфигурацию взять свойство здесь:

Configuration["Data:DefaultConnection:ConnectionString"]) 

Ваш JSON должны быть так:

{ 
"AppSettings": { 
     "SiteTitle": "Chronicus" 
}, 
"Data": { 
     "DefaultConnection": { 
      "ConnectionString": "Server=(localdb)\\MSSQLLocalDB;Database=Chronicus;Trusted_Connection=True;MultipleActiveResultSets=true" 
          } 
     } 
} 

Другая проблема может быть методом принятия конфигурации, Попробуйте это :

Configuration.Get("Data:DefaultConnection:ConnectionString"); 

вместо этого:

Configuration["Data:DefaultConnection:ConnectionString"]; 

Для получения дополнительной информации, попробуйте this link.

Смежные вопросы