2015-12-14 14 views
6

Bir Nuget Paketi oluşturuyorum ve sınıf kütüphanemde çalışıyorum. Varsayılan bağlantı dizesine erişmek için appsetting.json veya config.json'a erişime ihtiyacım var.Sınıf kitaplığından appsetting.json veya config.json'a vNext içinde erişme

Güncel çalışma kodumu ASP.NET'in yeni sürümüne taşımanın en iyi yolu vNext?

this question numaralı telefondan okudum, ancak benim için iyi bir çözüm.

Çalışma kodu:

/// <summary> 
/// Retrieves the default connectionstring from the App.config or Web.config file. 
/// </summary> 
/// <returns>Returns the default connectionstring from the App.config or Web.config file.</returns> 
public static string GetDefaultConnectionString() 
{ 
    return ConfigurationManager.ConnectionStrings[DefaultConnectionstringName].ConnectionString; 
} 
+0

aşağıdaki. Aşağıdaki cevabı "kabul edildi" olarak görmüyorum, bu hala sizin için çalışmıyor mu? – ganders

cevap

5

eski sınıf kütüphanesi app.config ile otomatik yapılandırma değerlerini okuyun. Yeni sınıf kütüphanesinde bu işlevi eklemelisiniz. Startup.cs, app.settings'i okumak için bir sınıf kütüphanesinde de Startup.cs eklemeniz gerekir. senin project.json yılında

bir appsettings.jsonadd - new item aracılığıyla ekle bağımlılık

"Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final" 

olduğundan emin olun. Eğer bağlantı MyDB veya DefaultConnection çağırabilir json

{ 
    "Data": { 
    "MyDb": { 
     "ConnectionString": "Server=.;Database=MyDb;Trusted_Connection=True;MultipleActiveResultSets=true" 
    } 
    } 
} 

üzerine filtreleyin.

Bir Startup.cs kodunu kodun appsettings.json kodunu okumak için ekleyin.

Bunu yapmak için Startup yapıcı yöntemine bakın.

örn. referans

Configuration["Data:MyDb:ConnectionString] 

Yukarıdaki örnekte

using Microsoft.Data.Entity; 
using Microsoft.Extensions.Configuration; 
using Microsoft.Extensions.DependencyInjection; 



namespace MyProject 
{ 
    public class Startup 
    { 
     public IConfigurationRoot Configuration { get; set; } 

     public Startup() 
     { 
      var builder = new ConfigurationBuilder() 
      .AddJsonFile("appsettings.json"); 

      Configuration = builder.Build(); 
     } 

     public void ConfigureServices(IServiceCollection services) 
     { 
      services.AddEntityFramework() 
       .AddSqlServer() 
       .AddDbContext<MyDbContext>(options => 
        options.UseSqlServer(Configuration["Data:MyDb:ConnectionString"])); 
     } 
    } 
} 

IConfigurationRoot bir tür, dize döndürür.

dize değeri denemek almak için bu aynı senaryoyu (MVC proje çalışmasını, ancak web projesinden bağlantı dizesini okumalıyız ayrı projede yapılan tüm veri erişimi,) sahip

string connection = Configuration.Get<string>("Data:MyDb:ConnectionString"); 
+1

Merhaba, bu bir web projesi için ... Bir sınıf kütüphanesinde vNext – chemitaxis

+0

mmm tamam, şu an deniyorum ... ama Nuget olarak kullandığımda, waht project.json okuyacak ? Teşekkürler! – chemitaxis

+0

Eski sınıf kitaplığı, app.config ile otomatik olarak yapılandırma değerlerini okudu. Yeni sınıf kütüphanesinde bu işlevi eklemelisiniz. Startup.cs, app.settings'i okumak için bir sınıf kütüphanesinde de Startup.cs eklemeniz gerekir. Bu kodu, çalıştığım sınıf kitaplığı kodumdan kopyalarım. Daha kolay hale getirmek için orijinal yanıtımı değiştireceğim – firste

İlgili konular