【问题标题】:Access app.config file in class library from web project从 Web 项目访问类库中的 app.config 文件
【发布时间】:2015-12-27 03:26:25
【问题描述】:

我在 wcf 类库中有一个类 (myservice),它从类库中的 app.config 文件访问端点和 appsettings。这个类(myservice)是从我的控制器(web 项目)中调用的。我发现它正在尝试读取 web 项目的 web.config 文件,而不是 app.config 文件。如何访问正确的文件?

除了没有得到任何值,我得到了这个错误

不在独立exe中运行时必须指定exePath

我在我的服务中使用它-

var appSettings = ConfigurationManager.AppSettings;

var configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
var serviceModelSectionGroup = ServiceModelSectionGroup.GetSectionGroup(configuration);
var clientSection = serviceModelSectionGroup.Client;
var endpoint = clientSection.Endpoints;
return new EndpointAddress(endpoint[0].Address);

【问题讨论】:

  • 请在层之间包含组件的分解,并显示您的问题所在。

标签: c# wcf app-config class-library


【解决方案1】:

您不应在库中使用ConfigurationManager.OpenExeConfiguration。推荐的方法是让你的配置从使用代码中传递;如果出于某些原因您不想这样做,您可以使用设置机制来创建配置部分,而无需您直接访问配置文件。

【讨论】:

  • 谢谢。什么是设置机制?我无法通过使用代码传递配置,因为我正在 web 项目中调用 myservice 并且我无权访问 web 项目中的 myservice app.config。我想要的只是让 myservice 使用它自己的 app.config
  • 我不明白你。您正在谈论的服务 - 是服务还是客户端?如果是前者,为什么要从控制器调用它的类?
  • 所以我有一个从助手类调用的 wcf 服务。这是在服务层。我正在从我的 Web 层中的控制器调用我的助手类。
  • 那你说的配置是什么——助手还是服务?
  • helper和service在同一层,所以app.config同时适用
【解决方案2】:

问题出在线路上

 var configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);

此调用有过载可用

ConfigurationManager.OpenExeConfiguration(string exepath)

【讨论】:

  • 在IIS下运行时没有exepath。
猜你喜欢
  • 2012-03-20
  • 1970-01-01
  • 2011-05-26
  • 1970-01-01
  • 2012-04-09
  • 2016-03-23
  • 2011-07-30
  • 2017-07-04
  • 1970-01-01
相关资源
最近更新 更多