App.config AppSettings возвращает ноль - PullRequest
3 голосов
/ 21 октября 2011

У меня есть проект, который является клиентом WCF, использующим конечные точки netTCP. Проект компилируется в DLL, на которую ссылается другой проект. Я использую AppSettings для переключения между локальными и удаленными конечными точками ip следующим образом:

    public EmbeddedClient()
    {
        //Grab ip to use: remote or local (used for simulator)
        String location = ConfigurationSettings.AppSettings["ipAddress"];
        String ip = ConfigurationSettings.AppSettings[location];

        //Default to localhost if no appsetting was found
        if (ip == null)
            ip = "localhost";

        String address = String.Format("net.tcp://{0}:9292/EmbeddedService", ip);

        //Setup the channel to the service...
        channelFactory = new ChannelFactory<IEmbeddedService>(binding, new EndpointAddress(address));

    }

Мой App.Config - это место, где у меня есть конечные точки AppSettings и WCF:

  <?xml version="1.0" encoding="utf-8" ?>
  <configuration>
  <appSettings>
    <add key="ipAddress" value="local"/>
    <!-- Replace above value to "local" (Simulator) or "remote" (Harware)-->
    <add key="local" value="localhost"/>
    <add key="remote" value="192.168.100.42"/>
  </appSettings>

  <system.serviceModel>
      <!--WCF Endpoints go here--->
  </system.serviceModel>
  </configuration>

Когда я компилирую проект, appsetting всегда возвращает ноль. Я также заметил, что app.config после компиляции переименовывается во что-то вроде Embedded_DCC_Client.dll.config. Почему он не может найти мои appsettings? Почему возвращается ноль? Спасибо.

Ответы [ 3 ]

7 голосов
/ 21 октября 2011

Похоже, вы пытаетесь использовать файл конфигурации с DLL - это не сработает.Вам необходимо установить настройки вашего приложения и специфичные для WCF настройки в файле приложения приложения, которое ссылается на DLL WCF.DLL будет использовать файл конфигурации вызывающего приложения.

Другими словами:

MyWCF.dll - это ваша WCF DLL.

MyApplication.exe - этоприложение, которое ссылается на WCF.DLL.

Вы должны поместить настройки своего приложения и настройки system.serviceModel в файл app.config файла MyApplication.exe.MyWCF.DLL должен затем прочитать значения из этой конфигурации.

3 голосов
/ 21 октября 2011

Файл настроек приложения загружается из контекста запускаемого приложения, поэтому он должен находиться либо в этом проекте, либо ссылаться на него из запускаемого проекта.

0 голосов
/ 01 августа 2016

Папка, которая используется для установки утилиты, должна содержать файл Exe, поддерживающий dll и файл exe.config

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...