Could not find default endpoint element that references contract :connect to WCF endpoint through Powershell cmdlet

StackOverflow https://stackoverflow.com/questions/11569596

Question

I have created a class library that should connect to a WCF endpoint project I am hosting. The client project has commandlets defined that should interact with the service.

However, I keep getting the following error:

     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.

Do you know what the problem might be?

EDIT What I have is a single Class Library defining cmdlets. I use an .psd1 file to Import-Module which uses the dll files produced.

EDIT2 Once again, I don't have a project referencing my library. It is the powershell that calls the commandlets defined and these cmdlets should connect to the WCF endpoint

Thanks

Was it helpful?

Solution

have got this to work: here is a clean solution:

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;
    }

}

OTHER TIPS

create configuration file with endpoints in startup project

When you're running the code in your cmdlet assembly, the executing process is powershell.exe (in %windir%\system32\WindowsPowershell\v1.0 or %windir%\syswow64\WindowsPowershell\v1.0), so any System.ServiceModel configuration will be need to be defined in the powershell config file (powershell.exe.config).

I'm guessing this is probably not a practical option, so you'll probably need to configure your service client or channel factory manually rather than via the application configuration file.

See here for an example: http://msdn.microsoft.com/en-us/library/ms734681.aspx

Another option may be to use an Activation Configuration File: http://msdn.microsoft.com/en-us/library/ff361644.aspx

I'm not sure how well this will work for service configuration elements.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top