2

私は現在、akka.netを使用しようとしていますが、HOCONを使用する設定は、 アプリケーションを設定するときに通常app.jsonで使用されるjson構文とは異なる構文です。 現在のapp.json設定でHOCONを使用する方法を知っている人はいますか?Akka.net asp.net 5 mvc 6 for Hocon

+0

は、.NETのコアを使用していますか? – profesor79

+0

@ profesor79はい私は.netのコアを使用しています – HBbaale

+0

akka.net gitter room https://gitter.im/akkadotnet/akka.net – profesor79

答えて

1

何ができることは、独自のテキストファイルにHOCONを入れた後、次のコマンドを実行します

/// <summary> 
    ///  Used to load HOCON definitions from a dedicated HOCON file 
    /// </summary> 
    public static class HoconLoader 
    { 
     /// <summary> 
     ///  Parses a HOCON <see cref="Config" /> object from an underlying file 
     /// </summary> 
     /// <param name="path">The path to the HOCON file.</param> 
     /// <returns>A parsed <see cref="Config" /> object.</returns> 
     public static Config FromFile(string path) 
     { 
      return ConfigurationFactory.ParseString(File.ReadAllText(path)); 
     } 
    } 

その後

ActorSystem.Create(文字列名、コンフィグ設定)にそのhoconオブジェクトを渡します

ファイルを「常にコピーする」または「コピーするならばコピーする」

0

私はConfigurationFactory.FromObjectと、appsettingsからakka-configを読むのに興味があるプロパティを持ついくつかのクラスを使用します。

var config = ConfigurationFactory.FromObject(new { akka = configuration.GetSection("Akka").Get<AkkaConfig>() }); 

actorSystem = ActorSystem.Create("Stimpy", config); 

私は、appsettingsからkebab-caseプロパティを解析する方法を理解するのに気を配りませんでした。だから私はハイフンを除いてプロパティの名前を変更しました。次に、JsonProperty属性を正しい名前に設定して、FromObjectが正しく非直列化できるようにします。

public class AkkaConfig 
{ 
    [JsonProperty(PropertyName = "log-config-on-start")] 
    public string logconfigonstart { get; set; } 
    [JsonProperty(PropertyName = "stdout-loglevel")] 
    public string stdoutloglevel { get; set; } 
    public string loglevel { get; set; } 
    public string[] loggers { get; set; } 
    public ActorConfig actor { get; set; } 

    public class ActorConfig 
    { 
     public DebugConfig debug { get; set; } 
     public Dictionary<string, string> serializers { get; set; } 
     [JsonProperty(PropertyName = "serialization-bindings")] 
     public Dictionary<string, string> serializationbindings { get; set; } 

     public class DebugConfig 
     { 
      public string receive { get; set; } 
      public string autoreceive { get; set; } 
      public string lifecycle { get; set; } 
      [JsonProperty(PropertyName = "event-stream")] 
      public string eventstream { get; set; } 
      public string unhandled { get; set; } 
     } 
    } 
} 

appsettings.json:

{ 
    "Logging": { 
    "IncludeScopes": false, 
    "LogLevel": { 
     "Default": "Trace" 
    } 
    }, 
    "Hosting": { 
    "Url": "http://*:1890" 
    }, 

    "Akka": { 
    "logconfigonstart":"on", 
    "stdoutloglevel":"INFO", 
    "loglevel": "DEBUG", 
    "loggers": [ "Akka.Logger.NLog.NLogLogger, Akka.Logger.NLog" ], 

    "actor": { 
     "debug": { 
     "receive": "on", 
     "autoreceive": "on", 
     "lifecycle": "on", 
     "eventstream": "on", 
     "unhandled": "on" 
     }, 
     "serializers": { 
     "hyperion": "Akka.Serialization.HyperionSerializer, Akka.Serialization.Hyperion" 
     }, 
     "serializationbindings": { 
     "System.Object": "hyperion" 
     } 
    } 
    } 
}