2015-10-15 2 views
2

При использовании WebAPI 2 мой web.config былстрого типизированных конфигурации AppSettings в ASP.NET 5

<connectionStrings> 
    <add name="RavenHQ" connectionString="Url=http://localhost:8080;Database=ModelFarmDb" />  
</connectionStrings> 

Для ASP.NET 5.0, я не могу работать, как написать файл config.json сделать тоже самое.

Я попытался

{ 
    "Data": { 
     "RavenHQ": { 
      ConnectionString: "Url=http://localhost:8080;Database=ModelFarmDb" 
     } 
    } 
} 

, но он не работает. Любые предложения о том, как напрямую сопоставлять разделы web.config с config.json, чтобы не разбивать другие библиотеки, которые предполагают web.config?

Приложение работает под управлением IIS Express локально и является веб-приложением на Azure.

Большое спасибо!

+0

Если у вас есть библиотеки, которые все еще используют 'ConfigurationManager' для доступа к Web.config в ASP.NET 5, вы должны в идеале переписать их вместо' IOptions ', где тип T представляет собой тип, содержащий ваши настройки выше. –

+0

У меня получилось исключение «В файле конфигурации приложения нет строки соединения с именем« RavenHQ ».». В проекте .NET 5 я использую ссылки на DLL проектов, у которых есть файл web.config. –

+0

Если у вас нет контроля над этими ссылками DLL, и вам действительно нужно их использовать, вам может потребоваться добавить строку соединения в обоих местах. –

ответ

2

Вы выполняете это в asp.net 5.0 по-другому. Для этого примера я использовал json-файл. Если вам нужно добавить файл XML просто использовать этот пакет Microsoft.Framework.Configuration.Xml и использовать .AddXmlFile() метод

Этот пример использует бета-7

Создать AppSetting класс

public class AppSetting 
{ 
    public string Setting1 { get; set; } 

    public string Setting2 { get; set; } 

} 

В файле запуск добавить JSON файлом с конфигурацией в этом примере является вызов config.json

public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv) 
{  

    var builder = new ConfigurationBuilder() 
     .SetBasePath(appEnv.ApplicationBasePath) 
     .AddJsonFile("config.json") 
     .AddXmlFile("thefilename") 
     .AddJsonFile($"config.{env.EnvironmentName}.json", optional: true); 

    builder.AddEnvironmentVariables(); 

    Configuration = builder.Build(); 
} 

public IConfiguration Configuration { get; set; } 

Затем вам нужно добавить сервис App вашего класса AppSetting поэтому он может быть введен для последующего использования

services.Configure<AppSettings>(Configuration.GetSection("AppSettings")); 

Затем в контроллере или где-либо вам нужно configuraton впрыскивать IOptions<AppSettings>

public class SampleController : Controller 
{ 

    private readonly AppSettings _appSettings; 

    public SampleController(IOptions<AppSettings> appSettings) 
    {    
     _appSettings = appSettings.Value;    
    } 

} 

и это, как JSON выглядит

{ 
    "AppSetting": { 
    "Setting1": "Foo1", 
    "Setting1": "Foo1" 
    } 
} 

Я взял эти горошины ces кода от live.asp.net в github

+0

Спасибо за это, пытались решить это в течение дня! Я нахожусь на бета-версии 8, и это все еще работает. – tagustini

+0

Нет проблем. Можете ли вы пометить вопрос, так как ответ все работает –

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