Akash Patel
Akash Patel

Reputation: 339

why I can't access wcf hosted in windows service?

I have a WCF service hosted in windows service.

when I am trying to access the service I am getting below error message.

No connection could be made because the target machine actively refused it 127.0.0.1:9002

Inner Exception

There was no endpoint listening at http://localhost:9002/MainService/Service that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.

But endpoints has been defined in App config of WCF as below.

<system.serviceModel>
    <services>
      <service name="MainService.CalculatorService">
        <endpoint address="CalculatorService" binding="basicHttpBinding" contract="MainService.ICalculator">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:9002/MainService/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True" />
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

web config of the client

<client>
    <endpoint address="http://localhost:9002/MainService/CalculatorService"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_INoiseCalculator"
    contract="Service.ICalculator" name="BasicHttpBinding_INoiseCalculator" />
</client>

In Controller I am accessing service as per below

MainService.CalculatorClient proxy = new MainService.CalculatorClient();
proxy.getDetails();

I have opened up the port in the firewall as well.

I can't figure out what's wrong because when service gets self hosted in WccSvcHost it works fine but after deployment it doesn't work.

Upvotes: 0

Views: 391

Answers (1)

Abraham Qian
Abraham Qian

Reputation: 7522

It seems that there is something wrong with the service running state. For verifying this, we could talk about the client endpoint at first.

<client>
    <endpoint address="http://localhost:9002/MainService/CalculatorService"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_INoiseCalculator"
    contract="Service.ICalculator" name="BasicHttpBinding_INoiseCalculator" />
</client>

The contract is Service.ICalculator, while the namespace you are using to instantiate the client proxy is MainService

MainService.CalculatorClient proxy = new MainService.CalculatorClient();
proxy.getDetails();

Is the client service endpoint automatically generated by adding service reference? Why the namespace is incongruity?
I suggest you generate the client endpoint again by adding service reference on the client-side, with this, we can check if the service is working well.
enter image description here
About calling the service by adding service reference.
https://learn.microsoft.com/en-us/dotnet/framework/wcf/accessing-services-using-a-wcf-client
Feel free to let me know if the problem still exists.

Upvotes: 1

Related Questions