2016-08-15 2 views
2

ServiceStack (4.0.62) не регистрирует и не подключает свойство AppSettings. Я даже не знаю, как отлаживать эту ситуацию, может быть, кто-то может это объяснить.ServiceStack не выполняет автоматическую проводку и не регистрирует AppSettings

Итак, у меня есть ServiceStack на основе применения самопринятый консоли Windows (используется по умолчанию IoC Funq): AppSettings недвижимость

SomeService является не инициализироваться:

public class SomeService : Service 
    { 
     public IAppSettings AppSettings { get; set; } 

     public SomeResponse Get(SomeRequest request) 
     { 
      // Exception: AppSettings == null 
      var someValue = AppSettings.Get<string>("Key1"); 

      // ... 
     } 
    } 

Как возможно ли? Что не так?

ответ

2

ServiceStack делает register the IAppSettings in Funq по умолчанию.

Я также проверил это, используя ваш пример в новом Self-хост Console App:

public class AppHost : AppHostHttpListenerBase 
{ 
    public AppHost() : base("SomeServer", typeof(SomeService).Assembly) {} 
    public override void Configure(Container container) 
    { 
     SetConfig(new HostConfig { 
      DefaultContentType = MimeTypes.Json, 
      DebugMode = true, 
     }); 

     AppSettings = new DictionarySettings(new Dictionary<string, string> { 
      { "Key1", "Value1" }, 
      { "Key2", "Value2" }, 
     }); 
    } 
} 

[Route("/appsettings/{Key}")] 
public class SomeRequest 
{ 
    public string Key { get; set; } 
} 

public class SomeResponse 
{ 
    public string Value { get; set; } 
} 

public class SomeService : Service 
{ 
    public IAppSettings AppSettings { get; set; } 

    public SomeResponse Get(SomeRequest request) 
    { 
     return new SomeResponse { Value = AppSettings.Get<string>(request.Key) }; 
    } 
} 

Это начинается с:

class Program 
{ 
    static void Main(string[] args) 
    { 
     new AppHost().Init().Start("http://*:8088/"); 
     "ServiceStack Self Host with Razor listening at http://127.0.0.1:8088".Print(); 
     Process.Start("http://127.0.0.1:8088/"); 

     Console.ReadLine(); 
    } 
} 

Который работает, как ожидалось, а именно:

Проверьте ?debug=requestinfo, чтобы узнать, есть ли у вас StartUpErrors, которые могли бы помешать инициализации AppHost.

+0

спасибо, что посмотрели. Я прочитал документацию по SS и был уверен, что он должен делать регистрацию IAppSettings по умолчанию. Я попробовал ваш образец - все отлично работает. Но в моей реальной регистрации проекта вообще не работает. Все, кроме регистрации. Это невероятно, 'StartUpErrors' пуст, см. [Полный журнал] (http://pastebin.com/yMs18HQ8). Я ошибался в версии ServiceStack, это было 4.0.56, теперь это 4.0.62, но ничего не изменилось. В моем случае AppHost начинается с «http: // +: 8088 /», другие варианты одинаковы. –

+1

@AlexNewman Не могу сказать, в чем проблема. Можете ли вы опубликовать автономный реестр, который я могу запустить локально, чтобы увидеть проблему, в идеале в новом репозитории Github или .zip в Документах Google, Dropbox и т. Д. – mythz

+0

Это была моя ошибка, извините, это было очень плохо идея использовать конструктор Service для реализации некоторых действий AppSettings. Вопрос закрыт, большое вам спасибо. –

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