Надстройка Excel не загружает app.config со справочной информацией о конфигурации службы

Я написал приложение со ссылкой на службу, чтобы делать вызовы веб-служб на определенный URL-адрес, и оно отлично работает. Я хочу переместить этот код в надстройку Excel, но столкнулся с этой проблемой:

Сообщение о необработанном исключении: не удалось найти элемент конечной точки с именем «ConnectivityHttpsSoap12Endpoint» и контрактом «Connectivity.ConnectivityPortType» в разделе конфигурации клиента ServiceModel. Это может быть связано с тем, что для вашего приложения не найден файл конфигурации или с тем, что в клиентском элементе не удалось найти элемент конечной точки, соответствующий этому имени.

Проблема в том, что мой app.config (со справочной информацией о службе) не загружается, потому что Excel вызывает мою библиотеку классов, и в app.config вызывающего приложения необходимо добавить ссылку на службу. Но можно ли это сделать с помощью Excel? А еще лучше, есть ли способ просто загрузить мой app.config из кода?


person hexboy    schedule 02.11.2012    source источник
comment
Я исправил это сам. Проблема заключалась в том, что Excel-DNA требует, чтобы файл конфигурации был ‹Name›.xll.config, и я использовал файл ‹Name›.dll.config по умолчанию, созданный Visual Studio. Проблема заключалась в том, что я выполнил поиск в Google по вышеуказанной ошибке вместо того, чтобы перейти прямо на сайт Excel-DNA и проверить форумы. В любом случае, теперь все хорошо.   -  person hexboy    schedule 06.11.2012


Ответы (3)


Вам нужно будет открыть его с помощью ConfigurationManager. Вы можете найти свой файл app.config в пути вызывающей сборки (обычно), поэтому вы можете написать такой метод:

public static Configuration LoadLocalConfigurationFile(string fileName)
{
    // fileName is the configuration file you want to open
    var configMap = new ExeConfigurationFileMap 
    { 
        ExeConfigFilename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName)
    };

    return ConfigurationManager.OpenMappedExeConfiguration(
        configMap, ConfigurationUserLevel.None);
}
person code4life    schedule 02.11.2012

Недавно у меня была такая же проблема, и я обнаружил, что лучшее решение содержится в:

Изменить app.config по умолчанию во время выполнения

указав ваш файл конфигурации на:

AppDomain.CurrentDomain.BaseDirectory + "AssemblyName.dll.config"

где AssemblyName — это имя сборки надстройки.

person SeeMoreGain    schedule 18.06.2013

Как отметил @hexboy в своем комментарии, ответ заключается в том, что ExcelDNA требует, чтобы файл конфигурации имел то же имя, что и файл «xll», но с расширением «.config». Затем ExcelDNA автоматически загрузит конфигурацию, и дополнительный код не требуется.

Также обратите внимание, что ExcelDNA создает различные файлы при сборке. Например. addin.xll, addin-packed.xll, addin64.xll, addin64-packed.xll, где сборка проекта называется addin.

Чтобы файл конфигурации был загружен, он должен совпадать с именем файла, используемого для надстройки. Например. addin-packed.xll.config при использовании addin-packed.xll в качестве зарегистрированной надстройки Excel.

person Josh Gallagher    schedule 12.07.2019