1

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="12680@altus.local" />
                </identity>
            </endpoint>
        </client>
    </system.serviceModel>
</configuration>
Community
  • 1
  • 1
dudeofea
  • 330
  • 4
  • 21
  • Can you post your client config file? – Rajesh Apr 27 '12 at 09:49
  • added my config files. even when adding "Test_Duplex" (my namespace) the error was the same. – dudeofea Apr 27 '12 at 14:36
  • 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 IIS – Rajesh Apr 30 '12 at 08:41
  • I removed everything within the 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 – dudeofea Apr 30 '12 at 22:19

2 Answers2

1

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

Matt
  • 25,943
  • 66
  • 198
  • 303
1

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.

dudeofea
  • 330
  • 4
  • 21
  • 1
    Note that a web reference wraps to wsdl.exe and restricts usage to basicHttpBinding or a derivative; This is because it creates proxies for .NET 1.x and 2.x clients. Adding a Service Reference wraps over svcutil.exe, creating proxies for clients that are 3.x+, so in some senses, you have soem greater flexibility. See http://stackoverflow.com/questions/308454/difference-between-web-reference-and-service-reference and http://andrewtokeley.net/archive/2008/07/10/the-difference-between-ldquoadd-web-referencerdquo-and-ldquoadd-service-referencerdquo.aspx for specifics on this. – Ray May 01 '12 at 22:51