上下文
在 asp.net 5
vNext
MVC6
中,Web.config
消失了,取而代之的是 json
文件作为配置。但是,在我的 web.config
中,我设置了 WCF 客户端
、System.Diagnostics
和 Essential.Diagnostics< 的跟踪监听器
,以及这些组件(WCF 客户端
和跟踪监听器显然无法在启动时读取 json
)。所以在 vNext
中,微软显然已经放弃了 System.Configuration
。
问题
是否有一些迁移路径,这样我就不必完全重写以使这些组件在启动时读取配置信息?
最佳答案
简短回答:它在 .NET Framework (4.5.1+) 上的 ASP.NET Core MVC 中工作正常,将您的设置放在 app.config 中,但在 ASP.NET 中不起作用.NET Core 上的核心 MVC。
更长的答案:
ASP.NET Core 可以在 .NET Framework 和 .NET Core 上运行,所以我猜迁移路径是暂时继续使用 .NET Framework。
对于 System.Diagnostics 和 Essential.Diagnostics(我参与其中),我至少能够获得在 .NET Framework(而非 .NET Core)上运行的 ASP.NET Core 中运行的演示。
在 .NET Framework 中,TraceSource 等仍然从配置中加载。在 ASP.NET Framework 项目中,将有一个 app.config 文件(不是 web.config),您需要在其中放置配置部分。
注意:只是构建(调试 > 启动新实例)不会更新 bin 目录中的 .exe.config 文件;您需要进行清理或重建,然后进行调试(或删除输出 bin 文件夹)。
您可以直接(对于遗留代码)或通过新的 Microsoft.Extensions.Logging 写入 TraceSource,并配置 Microsoft.Extensions.Logging.TraceSource 提供程序。 (新界面包括一些很好的分层支持功能。)
无论哪种方式,它都会加载并写入配置的 TraceSource,它可以输出到系统 TraceListeners。
您还可以从 Essential.Diagnostics 配置额外的监听器(尽管 RollingFileTraceListener 没有正确处理文件名中的 {AppData} 标记,所以我不得不将路径硬编码到 C:\Temp\Logs)。
以上内容也适用于控制台应用程序(更简单),使用 .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 还没有自动加载配置的方法.
关于json - Web.config 在 Asp.net 5 mvc6 中消失了,非 Web 配置怎么样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34132558/