Ответ 1
Можете ли вы удалить файл .SUO(файл опций решения пользователей) после закрытия VS? Это будет reset кеш для компонента XMLEditor в VS и устранит вашу проблему.
Я обновил службу WCF до .NET Framework 4.5. После этого я заметил синюю квадратную строку вокруг IMetaDataExchange
в файле конфигурации хоста.
Вот что выглядит раздел служб конфигурации:
<services>
<service behaviorConfiguration="MyBehavior" name="MyServiceHost">
<endpoint binding="wsHttpBinding" bindingConfiguration="noSecurityBinding" contract="MyServiceContract"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
Когда я наводил указатель мыши на IMetaDataExchange
, ошибка говорит:
Атрибут 'contract' недействителен. Значение "IMetadataExchange" недействительно в соответствии с его типом данных "serviceContractType". Ошибка ограничения Enumeration.
Служба работает нормально. Поэтому мне интересно, почему это недействительно.
Можете ли вы удалить файл .SUO(файл опций решения пользователей) после закрытия VS? Это будет reset кеш для компонента XMLEditor в VS и устранит вашу проблему.
Я добавил System.ServiceModel в ссылки на проект и ушел
У меня была аналогичная проблема: несколько атрибутов name
и contract
, отображаемых в App.Config моей службы WCF с ужасным синим squiggly и предупреждениями, отображаемыми в списке ошибок.
В моем случае проблема заключалась в том, что после создания сервисов и контрактов я реорганизовал пространства имен проекта службы, поэтому сгенерированный специфический для решения *.xsd использовал новые пространства имен, но мой инструмент рефакторинга не обновил приложение. Сопоставьте изменения. Включение и добавление полностью заданных пространств имен устранили проблему.
Возможно, не ответ для OP, но другие с этой проблемой должны проверить, что [ServiceContract]
объявлен для interface
ваших служб, потому что это приводит к точной ошибке.
Если вы используете Intellisense для предупреждения. Он выведет список для вас, чтобы выбрать из него. Явным образом позвоню этому члену.
Если удаление файла .SUO не работает, проверьте свои ссылки, чтобы убедиться, что у вас есть ссылка System.ServiceModel. Это оказалось проблемой, которая привела меня сюда.
Закрытие VS2013 Prof, удаление папки "obj" и перекомпиляция сделали эту работу для меня.
Я обнаружил, что проблема заключается в том, что атрибут контракта чувствителен к регистру.
У меня было другое решение, которое ссылалось на ту же службу, но не было никаких предупреждений в app.config. Я выполнил сравнение в блокноте ++ в разделе system.serviceModel файла app.config и выделил разницу между двумя атрибутами контракта.
как только я изменил атрибут контракта на правильную регистрацию, чувствительную к регистру, предупреждение немедленно исчезло.
Я решил проблему. Если вы когда-либо изменили свой класс С# в Service1.cs и IService1.cs. Также обновите атрибут имени в элементе службы "<namespace> . <classname> " и атрибут контракта в конечном элементе "<namespace> . <classname> " в вашем App.config.
BTW. извините за плохой английский:)
У меня была такая же проблема на стороне клиента. Для меня решением было удалить и снова добавить ссылку на сервис.
Может быть, вы потеряли свои ссылки, когда вы обновили проект? Я заметил эту ошибку, когда мой проект, содержащий моего клиента, не имел ссылки на мой проект с моим сервисом.