【发布时间】:2015-02-09 05:55:49
【问题描述】:
我所说的通用 DLL 是指在运行这两者的服务器的文件系统上,只有一个 DLL 由服务和站点共享。
目标是 DLL 将拥有自己的 App.config 文件,这样当服务访问 DLL 并要求配置中的设置时,以及当网站访问 DLL 要求相同的设置时,这些设置将总是互相匹配。
我想如果服务使用同一个 DLL 的不同副本和 App.config 的不同副本,那么服务的 DLL 的配置可能与网站的 DLL 的配置不匹配。我试图通过只有一组 DLL 和它在服务器上的配置来确保完整性。
这是一个可行的目标吗?
我知道我必须在 DLL 中编写特定代码,以确保它不会读取任何 Web.config,但这似乎还不错。还有其他我没有想到的问题吗?
【问题讨论】:
-
嗯,在文件系统上共享 DLL 就像在 GAC 中注册一样简单。在我需要具有旧库的应用程序需要引用我需要的旧版本的 DLL(更具体地说是 log4net)之前,我曾经有过这种情况。但是,据我所知,当您引用 DLL 时,它引用了需要它的应用程序的 *.config
-
我想我可以使用
ExeConfigurationFileMap与Assembly.GetExecutingAssembly().Location混合使用来获取位于同一文件夹中且与DLL 同名的配置。 -
如何将 *.config 设置为每个应用程序的指定位置。 blogs.msdn.com/b/suzcook/archive/2003/06/02/57160.aspx AppDomainSetup.ConfigurationFile 似乎是一种方法。我可能会让两个应用程序都为文件位置引用一个数据库,这样你就可以让它动态引用文件路径
-
DLL 不使用自己的配置文件。他们使用应用程序的配置文件(app.config 或 web.config)。我不确定您要在这里解决什么问题。
-
@CoreyOgburn - 如果你有一个封装你的服务的 DLL,你应该能够通过适当的配置文件公开 SOAP 和 REST 端点,而不必做一堆箍跳。您期望什么设置需要更改?它是
<system.serviceModel>、<appSettings>还是其他东西的一部分?