39

I have a successfully running WCF service that I can call using javascript. However I want to invoke it using the WCF test client and im having difficulty doing this. I am told that I need to make sure I have enabled meta data publishing at the specified address. After reading the documentation I just cant see what im meant to do this is my configuration:

    <system.serviceModel>
       <services>
           <service name="CommentSessionIDWCFService" 
                    behaviorConfiguration="CommentSessionIDBehavior">
              <endpoint 
                  address="" 
                  behaviorConfiguration="CountryProvinceBehavior"
                  binding="webHttpBinding" 
                  contract="ICommentSessionIDWCFService" />
           </service>
       </services>
       <behaviors>
          <serviceBehaviors>
             <behavior name="CommentSessionIDBehavior">
                <serviceMetadata httpGetEnabled="true"/>
                <serviceDebug includeExceptionDetailInFaults="true"/>
             </behavior>
          </serviceBehaviors>
          <endpointBehaviors>
              <behavior name="CountryProvinceBehavior">
                  <webHttp/>
              </behavior>
          </endpointBehaviors>
       </behaviors>
    </system.serviceModel>

I've read other posts but I can't see what to populate and I just keep getting errors. Q's..

  1. Am I right in saying that I need to configure a complete new service in my config to show the metadata?

  2. What do I add to the configuration to make this meta data published so I can invoke with the client?

1
  • thanks for editing mark how did you neaten it? The tab button doesnt work for me... Commented May 19, 2011 at 11:33

4 Answers 4

51

You need a metadata endpoint for your service, here`s an example.

<services>
    <service name="MyService" behaviorConfiguration="MEX">
    <endpoint
        address="http://localhost:8000/MEX"
        binding="mexHttpBinding"
        contract="IMetadataExchange"
    />
    </service>
</services>

<behaviors>
    <serviceBehaviors>
        <behavior name="MEX">
            <serviceMetadata/>
        </behavior>
    </serviceBehaviors>
</behaviors>
Sign up to request clarification or add additional context in comments.

6 Comments

is this all I need to do? What does localhost:8000/MEX physically point to?
it adds a endpoint on the server that listens on port 8000 for metadata requests based on the IMetadataExchange contract. it responds with the data needed to build a proxy to the service. VS uses this data when you do an 'add reference' operation.
whomever down-voted this answer, please provide a reason for doing so.
mine as well (+1)
@Menahem I have the same problem: where should I add the lines of codes you provided? In the app.config of my Proxy I have these: ' <client> <endpoint address="localhost/Service1.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceReference1.IService1" name="BasicHttpBinding_IService1" /> ' Should I edit the contract value?
|
0

I had a similar problem after changing the config file in the TestClient with right click and "edit with svceditor" to increase my maxbuffersize. If someone did that mistake as well, try rebuilding your project.

Comments

0

Add

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]

Comments

-1

Set httpGetEnabled to true and set the includeExceptionDetailInFaults to false:

<serviceMetadata httpGetEnabled="true"/>

<serviceDebug includeExceptionDetailInFaults="false"/>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.