ConfigurationErrorsException с использованием WCF serviceModel для Addin VS2008 - PullRequest
0 голосов
/ 07 декабря 2010

У меня есть DLL (проект библиотеки в vs2008), который вызывает внешний веб-сервис.У проекта есть служебная ссылка на внешний веб-сервис

У меня есть модульный тест и app.config (с конфигурацией сервисной модели) в проекте модульного теста, и все в порядке.

Теперь я использую Addin VS2008, и не имеет конфигурационного файла, такого как Windows Forms или Asp.net.надстройка является DLL и имеет файл конфигурации.

Если я использую WCF (используя мою проектную DLL), config system.servicemodel не найден

Я видел это: http://vassiltonev.blogspot.com/2009/03/loading-custom-config-file-instead-of.html

, но при добавлении пользовательского поведения wcfрасширение вызывает ConfigurationErrorsException

Тип «Microsoft.ServiceModel.Samples.CustomTextMessageEncodingElement, CalidadCodigo.Integracion.CustomTextEncoder», зарегистрированный для расширения «customTextMessageEncoding», не может быть загружен.(E: \ TFS \ pro \ AddIn \ bin \ Debug \ MyAddIn.dll.config строка 123

Я тестирую с помощью Assembly QualifiedName в моих расширениях WCF, но неверно.

большепредложения или какой-либо пример кода?

мой конфиг

<extensions>
  <bindingElementExtensions>
    <add name="customTextMessageEncoding"
         type="Microsoft.ServiceModel.Samples.CustomTextMessageEncodingElement,CalidadCodigo.Integracion.CustomTextEncoder, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  </bindingElementExtensions>

</extensions>

код

    internal static WebServicePortTypeClient CrearClienteWCF()
            {
                try
                {
                    return new WebServicePortTypeClient();
                }
                catch (Exception ex)
                {

                    //TODO: not found serviceModel config

 var addInConfig = System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Reflection.Assembly.GetExecutingAssembly().Location);


                var endpointAddress = addInConfig.AppSettings.Settings[EasyVistaSvcEndPointAddress].Value;
                var endpoint = new System.ServiceModel.EndpointAddress(endpointAddress);

                return new WebServicePortTypeClient(EndPointConfigurationName, endpoint);

                // The type 'Microsoft.ServiceModel.Samples.CustomTextMessageEncodingElement, CalidadCodigo.Integracion.CustomTextEncoder' registered for extension 'customTextMessageEncoding' could not be loaded. (E:\TFS\pro\AddIn\bin\Debug\MyAddIn.dll.config line 123)


                }
            }

1 Ответ

1 голос
/ 07 декабря 2010

AFAIK Невозможно использовать ConfigurationManager в DLL.Я работал в том же выпуске, когда писал плагин для VS2010.

Мое решение состояло в том, чтобы загрузить настройки из файла и создать конечную точку и конечный адрес самостоятельно в коде, подобном этому:

Uri myUri = loadUriFromFile();

var endpoint = new EndpointAddress(myUri); 

NetTcpBinding binding = GetNewTcpBindingFromFile(); 

return new WebServicePortTypeClient(binding, endpoint);
...