Web.config 进入 Asp.net 5 mvc6,非 web 配置如何?
Web.config gone in Asp.net 5 mvc6, how about non web config?
上下文
在asp.net 5
vNext
MVC6
中,Web.config
消失了,取而代之的是json
文件作为配置。但是,在我的 web.config
中,我有 WCF clients
的设置,System.Diagnostics
和 Essential.Diagnostics
的跟踪侦听器,这些组件(WCF clients
和跟踪侦听器显然不能在启动时读取 json
)。所以在 vNext
中,微软显然已经放弃了 System.Configuration
。
问题
是否有一些迁移路径,这样我就不必完全重写以使这些组件在启动时读取配置信息?
简短回答: 它在 ASP.NET Core MVC on .NET Framework (4.5.1+) 中工作正常,将您的设置放在 app.config,但不适用于 ASP.NET .NET Core 上的 Core MVC。
更长的答案:
ASP.NET Core 可以在 .NET Framework 和 .NET Core 上 运行,所以我想迁移路径是暂时继续使用 .NET Framework。
对于 System.Diagnostics 和 Essential.Diagnostics(我参与其中),我至少能够在 ASP.NET Core 运行 中获得此工作的演示在 .NET Framework(不是 .NET Core)上运行。
在 .NET Framework 中,TraceSource 等仍然从配置中加载。在 ASP.NET 框架项目中,将有一个 app.config 文件(不是 web.config),您需要在其中放置配置部分。
注意:Just Building (Debug > Start new instance)不会更新bin目录下的.exe.config文件;您需要进行清理或重建,然后进行调试(或删除输出 bin 文件夹)。
您可以直接写入 TraceSource(对于遗留代码),或者通过新的 Microsoft.Extensions.Logging,配置 Microsoft.Extensions.Logging.TraceSource 提供程序。 (新界面包括一些很好的分层支持功能。)
无论哪种方式,它都会加载并写入配置的TraceSource,它可以输出到系统TraceListeners。
您还可以从 Essential.Diagnostics 配置额外的监听器(虽然 RollingFileTraceListener 没有正确处理文件名中的 {AppData} 标记,所以我不得不硬编码到 C:[=49= 的路径]).
以上内容也适用于 .NET Framework 4.5.1 及更高版本的控制台应用程序(更简单)。
Essential.Diagnostics中有一些示例代码:https://essentialdiagnostics.codeplex.com/SourceControl/latest#Examples/TestAspNetCoreOnNetFx/Controllers/HomeController.cs
我怀疑它可能与 WCF 类似:.NET Framework 版本应该继续工作,使用 app.config,但 .NET Core 实现可能只是 shell。
在 .NET Core 上:
请注意,Essential.Diagnostics 不适用于 .NET Core(截至 2017 年 2 月还不支持),并且大多数系统 TraceListener 类 也不支持。
唯一的一个是 TextWriterTraceListener,我已经使用手动创建的 TraceSource,但是通过查看 .NET Core 源代码,我认为 TraceSource 没有自动加载的方法尚未配置。
上下文
在asp.net 5
vNext
MVC6
中,Web.config
消失了,取而代之的是json
文件作为配置。但是,在我的 web.config
中,我有 WCF clients
的设置,System.Diagnostics
和 Essential.Diagnostics
的跟踪侦听器,这些组件(WCF clients
和跟踪侦听器显然不能在启动时读取 json
)。所以在 vNext
中,微软显然已经放弃了 System.Configuration
。
问题
是否有一些迁移路径,这样我就不必完全重写以使这些组件在启动时读取配置信息?
简短回答: 它在 ASP.NET Core MVC on .NET Framework (4.5.1+) 中工作正常,将您的设置放在 app.config,但不适用于 ASP.NET .NET Core 上的 Core MVC。
更长的答案:
ASP.NET Core 可以在 .NET Framework 和 .NET Core 上 运行,所以我想迁移路径是暂时继续使用 .NET Framework。
对于 System.Diagnostics 和 Essential.Diagnostics(我参与其中),我至少能够在 ASP.NET Core 运行 中获得此工作的演示在 .NET Framework(不是 .NET Core)上运行。
在 .NET Framework 中,TraceSource 等仍然从配置中加载。在 ASP.NET 框架项目中,将有一个 app.config 文件(不是 web.config),您需要在其中放置配置部分。
注意:Just Building (Debug > Start new instance)不会更新bin目录下的.exe.config文件;您需要进行清理或重建,然后进行调试(或删除输出 bin 文件夹)。
您可以直接写入 TraceSource(对于遗留代码),或者通过新的 Microsoft.Extensions.Logging,配置 Microsoft.Extensions.Logging.TraceSource 提供程序。 (新界面包括一些很好的分层支持功能。)
无论哪种方式,它都会加载并写入配置的TraceSource,它可以输出到系统TraceListeners。
您还可以从 Essential.Diagnostics 配置额外的监听器(虽然 RollingFileTraceListener 没有正确处理文件名中的 {AppData} 标记,所以我不得不硬编码到 C:[=49= 的路径]).
以上内容也适用于 .NET Framework 4.5.1 及更高版本的控制台应用程序(更简单)。
Essential.Diagnostics中有一些示例代码:https://essentialdiagnostics.codeplex.com/SourceControl/latest#Examples/TestAspNetCoreOnNetFx/Controllers/HomeController.cs
我怀疑它可能与 WCF 类似:.NET Framework 版本应该继续工作,使用 app.config,但 .NET Core 实现可能只是 shell。
在 .NET Core 上:
请注意,Essential.Diagnostics 不适用于 .NET Core(截至 2017 年 2 月还不支持),并且大多数系统 TraceListener 类 也不支持。
唯一的一个是 TextWriterTraceListener,我已经使用手动创建的 TraceSource,但是通过查看 .NET Core 源代码,我认为 TraceSource 没有自动加载的方法尚未配置。