Software & Finance





Visual Studio.NET - WCF Disabling Meta Data Publishing





 

Here is the information on how to Disable Meta Data Publishing while WCF hosting.

Metadata publishing for this service is currently disabled.

When you see this error message on the client machine web browser, it means the web.config file is not configured to expose the meta data information.

 

If you want to simulate this error, then you have to do the following two things:

 

  1. Remove the endpoint configuration for the contract IMetadataExchange

 

  1. Set <serviceMetadata httpGetEnabled="false"/> under behaviors\serviceBehaviors\behavior section

 

 

This is a Windows© Communication Foundation service.

Metadata publishing for this service is currently disabled.

If you have access to the service, you can enable metadata publishing by completing the following steps to modify your web or application configuration file:

1. Create the following service behavior configuration, or add the <serviceMetadata> element to an existing service behavior configuration:

<behaviors>

    <serviceBehaviors>

        <behavior name="MyServiceTypeBehaviors" >

            <serviceMetadata httpGetEnabled="true" />

        </behavior>

    </serviceBehaviors>

</behaviors>

2. Add the behavior configuration to the service:

<service name="MyNamespace.MyServiceType" behaviorConfiguration="MyServiceTypeBehaviors" >

Note: the service name must match the configuration name for the service implementation.

3. Add the following endpoint to your service configuration:

<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />

Note: your service must have an http base address to add this endpoint.

The following is an example service configuration file with metadata publishing enabled:

<configuration>

    <system.serviceModel>

 

        <services>

            <!-- Note: the service name must match the configuration name for the service implementation. -->

            <service name="MyNamespace.MyServiceType" behaviorConfiguration="MyServiceTypeBehaviors" >

                <!-- Add the following endpoint.  -->

                <!-- Note: your service must have an http base address to add this endpoint. -->

                <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />

            </service>

        </services>

 

        <behaviors>

            <serviceBehaviors>

                <behavior name="MyServiceTypeBehaviors" >

                    <!-- Add the following element to your service behavior configuration. -->

                    <serviceMetadata httpGetEnabled="true" />

                </behavior>

            </serviceBehaviors>

        </behaviors>

 

    </system.serviceModel>

</configuration>

For more information on publishing metadata please see the following documentation: http://go.microsoft.com/fwlink/?LinkId=65455.

 

A sample web.config that does not expose the meta data is given below:

 

<system.serviceModel>

 

    <services>

      <service name="Wcf_Test_Service.TestService" behaviorConfiguration="MyServiceTypeBehaviors">

       

 

        <endpoint address=""

                 binding="basicHttpBinding"

                 contract="Wcf_Test_Service.ITestService" >

        </endpoint>

       

       

      </service>

     

    </services>

   

    <behaviors>

      <serviceBehaviors>

        <behavior name="MyServiceTypeBehaviors">

          <serviceMetadata httpGetEnabled="false"/>

          <serviceDebug includeExceptionDetailInFaults="true"/>

        </behavior>

      </serviceBehaviors>

    </behaviors>

   

    <serviceHostingEnvironment multipleSiteBindingsEnabled="true">

      <serviceActivations>

        <add relativeAddress="TestService.svc" service="Wcf_Test_Service.TestService"/>

      </serviceActivations>

     

    </serviceHostingEnvironment>

 

  </system.serviceModel>