1

I created wcf service - when i tried to connect from "debug" MS application for testing, everything looks okay when i did my own application, I always get the System.ServiceModel.EndpointNotFoundException error. Where is a problem?

This is application settings:

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="IGlobalServices" />
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://localhost:53966/GlobalServices.svc/"
        binding="basicHttpBinding" bindingConfiguration="IGlobalServices"
        contract="ServiceReference1.IGlobalServices" name="IGlobalServices" />
    </client>
  </system.serviceModel>

and this is wcf settings:

    <?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections>
  <connectionStrings configSource="connectionStrings.config" />
  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5.2" />
    <httpRuntime targetFramework="4.5.2" />
  </system.web>
  <system.serviceModel>
    <behaviors>
      <endpointBehaviors>
        <behavior>
          <dataContractSerializer maxItemsInObjectGraph="10000000" />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    <bindings>
      <basicHttpBinding>
        <binding name="GlobalServicePortSoapBinding"></binding>
      </basicHttpBinding>
    </bindings>
    <services>
      <service name="Telmax.Eshop.WCFGlobal.GlobalServices">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:53966/GlobalServices.svc" />
          </baseAddresses>
        </host>
      </service>
    </services>
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <!--
        To browse web app root directory during debugging, set the value below to true.
        Set to false before deployment to avoid disclosing web app folder information.
      -->
    <directoryBrowse enabled="true" />
  </system.webServer>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

Is the endpoint set right?

user3512982
  • 61
  • 1
  • 9

1 Answers1

1

As you know, the endpoint address consists of a base address and a relative address. IIS host the WCF application by default when we debug the application. IIS specifies the base address, and we should specify the relative address of the service in the configuration file,

  <system.serviceModel>
    <services>
      <service name="WcfServiceFile.Service1">
        <endpoint address="myservice" binding="webHttpBinding" contract="WcfServiceFile.IService1" behaviorConfiguration="beh">
        </endpoint>
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <bindings>

If we debug the application in Visual Studio. the IIS Express will specify the base address. enter image description here
If we host the wcf application in IIS, an endpoint base address is usually formed with the svc file. enter image description here
So the base address is http://172.17.16.82:9001/service1.svc
Feel free to let me if there is anything I can help with.

Abraham Qian
  • 7,117
  • 1
  • 8
  • 22