1
votes

I'm having trouble getting a Duplex Web Service to work, I'm getting this error:

Could not find default endpoint element that references contract 'IService1' 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.

This is thrown by my unit test trying to access the service. I've found similar SO questions:

Could not find default endpoint element

WCF Error - Could not find default endpoint element that references contract 'UserService.UserService'

And the answer is to "include the config file into the other project", but what exactly does this mean?

  • Do I compile the service into a DLL and include that?
  • Do I copy everything included in "system.serviceModel" or a subset of that?
  • Something to do with endpoints?

EDIT: Config files

Web.config

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
      <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name ="svcbh">
          <serviceMetadata httpGetEnabled="False"/>
          <serviceDebug includeExceptionDetailInFaults="False"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <!--<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />-->
    <services>
      <service name ="Test_Duplex.Service1" behaviorConfiguration ="svcbh" >
        <host>
          <baseAddresses>
            <add baseAddress = "http://localhost:3857/Service1.svc" />
          </baseAddresses>
        </host>
        <endpoint name ="duplexendpoint"
                  address =""
                  binding ="wsDualHttpBinding"
                  contract ="Test_Duplex.IService1"/>
        <endpoint name ="MetaDataTcpEndpoint"
                  address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange"/>
      </service>
    </services>
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

output.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.serviceModel>
        <bindings>
            <wsDualHttpBinding>
                <binding name="duplexendpoint" closeTimeout="00:01:00"      openTimeout="00:01:00"
                    receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false"
                    transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8"   useDefaultWebProxy="true">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <reliableSession ordered="true" inactivityTimeout="00:10:00" />
                    <security mode="Message">
                        <message clientCredentialType="Windows" negotiateServiceCredential="true"
                            algorithmSuite="Default" />
                    </security>
                </binding>
            </wsDualHttpBinding>
        </bindings>
        <client>
             <endpoint address="http://localhost:3857/Service1.svc" binding="wsDualHttpBinding"
                bindingConfiguration="duplexendpoint" contract="Test_Duplex.IService1"
                name="duplexendpoint">
                <identity>
                    <userPrincipalName value="[email protected]" />
                </identity>
            </endpoint>
        </client>
    </system.serviceModel>
</configuration>
2
Can you post your client config file?Rajesh
added my config files. even when adding "Test_Duplex" (my namespace) the error was the same.dudeofea
What is your hosting environment? Also can you remove the base address in the host section and see if it works. If hosted on IIS then the host base address is ignored and the address is assigned by IISRajesh
I removed everything within the <host> section, still can't find the endpoint. I'm not sure what my hosting environment is, I'm running this on Visual Studio C#, winXP, and when initialized it says ASP.NET Development Server with the same address regardless of whether of not I've declared the <host>dudeofea

2 Answers

1
votes

It's an issue with a config file. When it generated the config file, it doesn't fully specify the type's namespace. Typically, you just need the <Namespace>.IService1

1
votes

I switched my wsdl generated files (Service1.svc, output.config) to a service reference instead and got my class definitions from there instead. You can see the tutorials doing this too.

it must have just slipped over my head since my boss had taught me to do it with the command prompt.

This fixed the "endpoint not found" errors.