Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт: подключитесь к конечной точке WCF с помощью командлета Powershell

Я создал библиотеку классов, которая должна подключаться к проекту конечной точки WCF, который я размещаю. В клиентском проекте определены командлеты, которые должны взаимодействовать со службой.

Однако я продолжаю получать следующую ошибку:

     Could not find default endpoint element that references contract Service1.MyService in the
 ServiceModel client configuration section. This might be because no configuration file was found
 for your application, or because no endpoint element matching this contract could be found in the
 client element.

Вы знаете, в чем может быть проблема?

ИЗМЕНИТЬ. У меня есть единственная библиотека классов, определяющая командлеты. Я использую файл .psd1 для Import-Module, который использует созданные файлы dll.

EDIT2 Еще раз, у меня нет проекта, ссылающегося на мою библиотеку. Это PowerShell, который вызывает определенные командлеты, и эти командлеты должны подключаться к конечной точке WCF.

Спасибо


person Saher Ahwal    schedule 19.07.2012    source источник
comment
Старый пост, но я тоже нашел наблюдение за этой ошибкой. Если у вас есть 2 сборки, где одна сборка вызывает метод в другой сборке, которая имеет ссылку на службу, а другая сборка является стартовой сборкой, ваша конфигурация службы также должна быть в стартовой сборке.   -  person Eon    schedule 30.11.2015


Ответы (3)


у вас это работает: вот чистое решение:

internal static class ServiceClass
{

    internal static Object GetWCFSvc(string siteUrl)
    {

        Uri serviceUri = new Uri(siteUrl);
        EndpointAddress endpointAddress = new EndpointAddress(serviceUri);

        //Create the binding here
        Binding binding = BindingFactory.CreateInstance();

        ServiceClient client = new ServiceClient(binding, endpointAddress);            
        return client;
    }


}

internal static class BindingFactory
{
    internal static Binding CreateInstance()
    {
        BasicHttpBinding binding = new BasicHttpBinding();
        binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
        binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
        binding.UseDefaultWebProxy = true;
        return binding;
    }

}
person Saher Ahwal    schedule 08.08.2012
comment
Спасибо, действительно мне очень помогли - person Jeppen; 21.11.2014

создать файл конфигурации с конечными точками в запускаемом проекте

person burning_LEGION    schedule 19.07.2012
comment
что такое стартап-проект. Все, что у меня есть, - это один проект, который определяет командлеты и представляет собой библиотеку классов. Я использую файл psd1 для импорта модуля для командлетов - person Saher Ahwal; 20.07.2012
comment
Он означает, что у проекта, использующего библиотеку, должен быть файл конфигурации, содержащий конечную точку. НЕ сама библиотека. - person Silvermind; 20.07.2012
comment
Я понимаю, но PowerShell - это то, что вызывает мою библиотеку, а не другой проект - person Saher Ahwal; 20.07.2012

Когда вы запускаете код в сборке командлета, исполняемым процессом является powershell.exe (в% windir% \ system32 \ WindowsPowershell \ v1.0 или% windir% \ syswow64 \ WindowsPowershell \ v1.0), поэтому любой System. Конфигурация ServiceModel должна быть определена в файле конфигурации powershell (powershell.exe.config).

Я предполагаю, что это, вероятно, не практичный вариант, поэтому вам, вероятно, потребуется настроить свой клиент службы или фабрику каналов вручную, а не через файл конфигурации приложения.

См. Пример здесь: http://msdn.microsoft.com/en-us/library/ms734681.aspx

Другой вариант - использовать файл конфигурации активации: http://msdn.microsoft.com/en-us/library/ff361644.aspx

Я не уверен, насколько хорошо это будет работать для элементов конфигурации службы.

person lesscode    schedule 20.07.2012
comment
Я займусь этим. Это единственный способ сделать это, помимо изменения конфигурации exe оболочки PowerShell? - person Saher Ahwal; 20.07.2012
comment
Насколько мне известно, нет возможности загрузить разделы конфигурации из любого места, кроме файла конфигурации приложения, и в вашем случае приложение - это PowerShell. - person lesscode; 20.07.2012