.net-core – 如何在Asp.net核心中使用Akka.Net 1.3.0配置的Apps
发布时间:2020-12-16 09:33:04 所属栏目:asp.Net 来源:网络整理
导读:我一直在玩Visual Studio 2017中支持.NetStandard 1.6的新版Akka.Net.由于Akka.Net配置的特性,它使用HOCON格式进行配置.之前的版本在app.config或Web.config中嵌入了易于阅读的HOCON配置.另一种选择是使用接受字符串对象的ConfigurationFactory.ParseString
我一直在玩Visual Studio 2017中支持.NetStandard 1.6的新版Akka.Net.由于Akka.Net配置的特性,它使用HOCON格式进行配置.之前的版本在app.config或Web.config中嵌入了易于阅读的HOCON配置.另一种选择是使用接受字符串对象的ConfigurationFactory.ParseString方法.但是从字符串解析HOCON对于小配置部分来说很方便.在我的情况下,我留下了这个ParseString配置,甚至没有按预期工作.
我想出了这个: var configString = @"akka { log-config-on-start = on stdout-loglevel = INFO loglevel = DEBUG loggers= ""[Akka.Logger.Serilog.SerilogLogger,Akka.Logger.Serilog]"" actor { debug { receive = on autoreceive = on lifecycle = on event-stream = on unhandled = on } } akka.persistence { journal { plugin = ""akka.persistence.journal.sqlite"" sqlite { class = ""Akka.Persistence.Sqlite.Journal.SqliteJournal,Akka.Persistence.Sqlite"" plugin-dispatcher = ""akka.actor.default-dispatcher"" connection-string = ""Data Source = F:SqliteDbSample.db3"" table-name = event_journal metadata-table-name = journal_metadata auto-initialize = on } } snapshot-store { plugin = ""akka.persistence.snapshot-store.sqlite"" sqlite { class = ""[Akka.Persistence.Sqlite.Snapshot.SqliteSnapshotStore,Akka.Persistence.Sqlite]"" connection-string = ""Data Source = F:SqliteDbSample.db3"" table-name = snapshot_store auto-initialize = on } } } "; var config = ConfigurationFactory.ParseString(configString); ActorSystem.Create("AkkaSystem",config); 哪个没有按预期工作. 解决方法
我将hocon转换为json并使用ConfigurationFactory.FromObject和一些具有我感兴趣的属性的类来从appsettings中读取akka-config.匿名对象模拟hocon根.
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" } },"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" } } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 401客户端’协商’,服务器’协商,NTLM’调用WCF
- entity-framework-4 – 首先在实体框架代码中使用导航属性
- asp.net – DataTable Wrapper或如何将UI与业务逻辑分离
- asp.net-mvc-3 – 基于角色的模型列表授权
- ASP.NET MVC 3使用身份验证
- asp.net-mvc – 如果ASP.NET MVC中的用户匿名,则重定向到自
- asp.net – 创建没有ASMX文件的Web服务?
- asp.net – 手动将MVC Web应用程序从3升级到4,无法添加API控
- asp.net-mvc-3 – MVC3 – 类型double与前导零的3位小数位
- Web.Config的配置
推荐文章
站长推荐
- ASP.NET MVC AJAX Sys是未定义的错误
- asp.net-mvc – 在MVC 3项目中使用T4MVC生成的代
- asp.net – 如何实现zopfli以获得更好的gzip压缩
- asp.net-mvc – 为什么在Asp.net MVC 2中的子操作
- 在ASP.NET Core MVC 6中记录到数据库
- asp.net-mvc – 我可以在.NET 4.0下编译和运行MV
- ASP.NET Core部署系列二:发布到CentOS上
- asp.net-mvc – 检测到潜在的危险Request.Form值
- 如何在ASP.NET生成的Word文件中嵌入图像
- asp.net-mvc – 如何在ASP.NET MVC控制器工厂中处
热点阅读