Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Invalid contract attribute for IMetadataExchange

Tags:

wcf

I have upgraded a WCF Service to .NET Framework 4.5. After doing so I noticed a blue squiggly line around the IMetaDataExchange in the host config file.

This is what the services section of the config looks like:

<services>
    <service behaviorConfiguration="MyBehavior" name="MyServiceHost">
        <endpoint binding="wsHttpBinding" bindingConfiguration="noSecurityBinding" contract="MyServiceContract"/>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>

When I hover the mouse over IMetadataExchange the error says:

The 'contract' attribute is invalid - The value 'IMetadataExchange' is invalid according to its datatype 'serviceContractType' - The Enumeration constraint failed.

The service seems to work fine. So I am curious why is this invalid.

like image 368
isxpjm Avatar asked Sep 13 '12 14:09

isxpjm


4 Answers

Can you delete .SUO (solution Users Option file) file after closing VS? This will reset the cache for XMLEditor component in VS and will fix your problem.

like image 147
Anand Avatar answered Nov 09 '22 00:11

Anand


I added System.ServiceModel to the references for the project and it went away

like image 21
Scott Avatar answered Nov 09 '22 01:11

Scott


I had a similar problem to this - several name and contract attributes showing in the App.Config of my WCF Service with the dreaded blue squiggly, and warnings showing up in the Error List.

In my case the problem was that after creating the services and contracts I had refactored the namespaces of the service project, so the generated solution-specific *.xsd was using the new namespaces but my refactoring tool hadn't updated the App.Config with the changes. Going in and adding the fully-specified namespaces fixed the issue.

like image 10
cori Avatar answered Nov 09 '22 01:11

cori


Perhaps not the answer for the OP, but others with this problem should check that [ServiceContract] is declared for the interface of your services, because this produces the exact error.

like image 7
Colin Steel Avatar answered Nov 09 '22 00:11

Colin Steel