WCF service host cannot find any service metadata. Please Check if metadata is enabled

1.4k views Asked by At

My App.config file is

<?xml version="1.0"?>
<configuration>
  <system.serviceModel>
    <services>
      <service name="WcfJsonRestService.Service1">
        <endpoint address="http://localhost:8733/service1" 
                  binding="webHttpBinding" 
                  contract="WcfJsonRestService.IService1"/>
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior>
          <webHttp />
        </behavior>
      </endpointBehaviors>
    </behaviors>
  </system.serviceModel>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
</configuration>

My service1.cs code is as below

using System;
using System.ServiceModel.Web;

namespace WcfJsonRestService
{
    public class Service1 : IService1
    {
        [WebInvoke(Method = "GET", 
                    ResponseFormat = WebMessageFormat.Json, 
                    UriTemplate = "data/{id}")]
        public Person GetData(string id)
        {
            // lookup person with the requested id 
            return new Person()
                       {
                           Id = Convert.ToInt32(id), 
                           Name = "Leo Messi"
                       };
        }
    }

    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
}

Initially this was giving issue as

WCF Service Host Configuration - Please try changing the HTTP port to 8733

So I had followed Executing the following code in CMD

netsh http add urlacl url=http://+:8733/ user=WORK\Clara

After executing this code I am facing new error as belowenter image description here

How can I resolve this issue?

I have also tried updating the App.Config as said over below link but then after I was getting some another error

WCF service host cannot find any service metadata

1

There are 1 answers

3
Pankaj Kapare On BEST ANSWER

You are missing service metadata behavior configuration. Please add below configuration:

<configuration>
<system.serviceModel>
<services>
  <service name="WcfJsonRestService.Service1">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8733"/>
      </baseAddresses>
    </host>
    <endpoint address="service1"
              binding="webHttpBinding"
              contract="WcfJsonRestService.IService1"/>
  </service>
</services>
<behaviors>
  <endpointBehaviors>
    <behavior>
      <webHttp />
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior>
      <serviceMetadata httpGetEnabled ="true"/>
    </behavior>
  </serviceBehaviors>
</behaviors>