Search code examples
wcfwcf-data-serviceswcf-ria-serviceswcf-bindingwcf-security

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


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


Solution

  • 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>