【发布时间】:2019-03-20 03:13:22
【问题描述】:
我正在编写一个由 3 个项目组成的网络应用程序。 ASP.net MVC5 网站,一个运行用户使用该网站安排的作业的 Windows 服务,然后是其他两个项目引用的类库。我有一个类库引用的 JSON 配置文件。它包含有关作业应如何运行的数据。我想将它包含在我的源代码控制中,并且我希望它是 JSON,以便使用该应用程序的同事可以轻松更改它,而无需重新编译解决方案。只有类库需要访问 json 文件——其他两个项目引用类库,因此它们本质上是通过访问类库中的类来引用 json 文件中的设置。
我的问题是,我在类库类中引用 json 配置文件路径,如下所示:AppDomain.CurrentDomain.BaseDirectory + "config.json"
但是,当 Web 服务器从类库中实例化一个类时,路径解析的是 Web 服务器的基目录而不是类库,这并不奇怪。
最好的方法是什么?我可以将配置文件永久保存在 webapp 项目中,然后在 windows 服务项目中链接到配置文件吗?但不确定在部署解决方案后会如何工作?
Web 项目是 .NET 标准 MVC 5。对于配置文件类型,JSON 优于 XML。
【问题讨论】:
-
不确定这是否有帮助,但在我的一个项目中,我使用了这个:
var configPath = Path.Combine(AppDomain.CurrentDomain.RelativeSearchPath ?? AppDomain.CurrentDomain.BaseDirectory, "config.json");这里的关键点是,在 WebAPI 项目中,正确的路径在AppDomain.CurrentDomain.RelativeSearchPath中,即null对于桌面应用程序,因此在这种情况下使用AppDomain.CurrentDomain.BaseDirectory -
它是 .NET Core 项目吗?文件需要是 JSON 吗?可以是XML配置文件吗?
-
Web 项目是 .NET 标准 MVC 5。对于配置文件类型,JSON 优于 XML。
-
更好的方法是编写 ConfigurationSection 处理程序,它将解析配置部分并提供数据......这很好地支持 XML 配置文件......您可以在 Class 中创建此部分处理程序库...然后您需要在Web Project和Windows Service项目中拥有XML配置文件...您无需担心路径...默认情况下会从应用程序路径中读取它...跨度>
-
是的,这基本上就是它目前的工作方式,它只使用 json 而不是 xml。但问题是配置文件需要同时驻留在 Web 和服务项目中。我只想为解决方案提供一个配置文件,否则要进行更改,您必须更改这两个文件并确保它们保持完全相同。例如,是否可以让 Windows 服务配置文件成为 Web 项目中配置文件的指针?或者我有什么选择?
标签: c# asp.net-mvc