2014-11-17 10 views
12

Mam lazurowe webjob, że ma pewne AppSettings dla kluczy api itpAzure nie webjobs czytając stronę AppSettings

Mam też kilka produkcji lazur ustawień aplikacji (określony w portalu) to powinno zastąpić moją konfigurację konfiguracji webjob .. Ale nie.

Dla mojej witryny działają one zgodnie z oczekiwaniami i wszystko jest w porządku. Jednak dla webjobs są one całkowicie ignorowane, a zamiast nich używane są moje ustawienia aplikacji z config.

Czy to błąd na błękitnym? Wszystkie dokumenty sugerują, że to powinno działać.

EDIT

znalazłem this blog o użyciu CloudConfigurationManager.GetSetting więc już realizowane i że nadal nie będzie działać - nadal przy użyciu ustawień, które są zdefiniowane w ustawieniach aplikacji internetowej Hioba złożyć :(

Dzięki

Odpowiedz

6

wygląda więc na to, że znalazłeś błąd!

to dlatego moim AppSettings zostało odwołanie od innego pliku, Lik e to (w app.config):

<AppSettings file="appsettings.config"/> 

To w zasadzie łamie zarządzanie konfiguracją Azure.

+0

należy zaznaczyć to Ty jako POUFNY więc wtedy. –

+0

Jakie jest rozwiązanie? –

+0

Jaki był powód umieszczenia ich w osobnym pliku? Jeśli potrzebujesz tego tylko w Dev/Debug, możesz utworzyć transformację konfiguracji sieci dla Debugowania, aby użyć tego osobnego pliku, a następnie zostaw to poza transformacjami lub nie masz go, dla innych środowisk –

1

Zastosowanie

"D: \ home \ site \ wwwroot \", aby utworzyć ścieżkę bezwzględną do plików wewnątrz swojej stronie.

wewnątrz twojej WebJob wskazać dowolny plik w twoim katalogu wwwwroot. Użycie ścieżki Absolute z D: \ home \ site \ wwwroot \ appsettings.config powinno naprawić twoją stronę.

+1

W ten sposób martwisz się tylko o jeden plik konfiguracyjny. Lubię to. –

1

Czy ustawienia zostały ustawione tylko w pliku Web.config, czy zostały ustawione w portalu lub przy użyciu narzędzia VS "Ustawienia witryny"? Musisz ustawić ustawienia związane z WebJob na tym poziomie, nie tylko w pliku Web.config. Gdy to zrobisz, uruchom ponownie witrynę, a ustawienia powinny tam być.

0

Rozwiązaniem tego problemu jest umieszczenie ustawień w tekście w znaczniku AppSettings pliku Web.config w ten sposób.

<AppSettings> 
    <add key="host" value="someHost" /> 
</AppSettings> 
0

Miałem podobny problem, ale dla mnie ustawiliśmy wartość "is_in_place" settings.job na true. Domyślam się, że gdy jest na miejscu, nie aktualizuje pliku konfiguracyjnego z ustawieniami. Nie mieliśmy ścisłego wymogu, aby działał, więc usunięcie tego ustawienia naprawiło problem.

0

Mam podobny problem z kilkoma zadaniami sieciowymi współużytkującymi wspólny plik ustawień. Niedopuszczalne byłoby powielanie ustawień w każdym zadaniu.

Ktoś wymienił użycie configSource= zamiast file= w app.config w celu odniesienia się do zewnętrznego pliku ustawień konfiguracyjnych. Próbowałem tego i wygląda na to, że działa teraz zgodnie z oczekiwaniami. Ustawienia są teraz pobierane z ustawień aplikacji portalu zamiast z pliku.

Na szczęście ustawienia dla zadań internetowych pochodzą z zewnętrznego pliku. Zastosowanie file= pozwoliło mi na użycie dodatkowych ustawień dla aplikacji innych niż te w pliku, ale na szczęście nie muszę tego robić.

0

Ustawienia aplikacji usługi aplikacji Azure są zachowywane w zmiennych środowiskowych. Przejdź do portalu Azure Portal dodaj ustawienia aplikacji lub wartości ciągu połączenia. Następnie można sprawdzić zmienne środowiskowe swojego serwisu z aplikacjami na https://sitename.scm.azurewebsites.net

Jeśli chcesz, aby webjobs udostępniać te ustawienia w projekcie webjob utwórz appsettings.json:

{ 
    "APPSETTING_AzureWebJobsDashboard": "", 
    "APPSETTING_AzureWebJobsStorage": "", 
    "SQLAZURECONNSTR_xxx": "" 
} 

w głównym() metoda

private static void Main(string[] args) 
{ 
      var builder = new ConfigurationBuilder() 
       .SetBasePath(Directory.GetCurrentDirectory()) 
       .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) 
       .AddEnvironmentVariables(); 

      var configurations = builder.Build(); 

      var services = new ServiceCollection() 
       .AddDbContext<ApplicationDbContext>(options => 
         options.UseSqlServer(configurations["SQLAZURECONNSTR_xxx"]), 
        ServiceLifetime.Transient) 
       .BuildServiceProvider(); 

      var host = new JobHost(new JobHostConfiguration 
      { 
       DashboardConnectionString = configurations["APPSETTING_AzureWebJobsDashboard"], 
       StorageConnectionString = configurations["APPSETTING_AzureWebJobsStorage"] 
      }); 

      host.RunAndBlock(); 
     } 

to jest prostsze niż próbuje dowiedzieć się ścieżkę do strony konfiguracji na obsługę aplikacji

Powiązane problemy