Значение недопустимо в соответствии с типом данных clientcontracttype

Я получаю сообщение об ошибке сказав:

недопустимый атрибут contract. значение недопустимо в соответствии с его тип данных "clientcontracttype"

Ниже приведена конфигурация конечной точки в web.config данного приложения WCF. Я использую .NET Framework 4.5 и Visual Studio 2012. Я проверил контракт OnlineReporting.Core.Contracts.IReportingInternalWcfPortal уже есть.

<endpoint address="http://localhost:63817/ReportingInternalWcfPortal.svc" 
          binding="basicHttpBinding" 
          bindingConfiguration="BasicHttpBinding" 
          contract="OnlineReporting.Core.Contracts.IReportingInternalWcfPortal" 
          name="ReportingInternalPortal" />

7 ответов


Я вижу, что этот вопрос довольно старый, и я не знаю, нашли ли вы решение к настоящему времени, но на всякий случай, это то, что я нашел, разрешит:

1) в обозревателе решений в папке ссылки на службы щелкните правой кнопкой мыши имя ссылки на службу с проблемой и выберите "Настроить ссылку на службу".

2) появится окно настройки ссылки на службу. Снимите флажок "повторно использовать типы в ссылочных сборках" и нажмите кнопку ОК кнопка.

3) перестроить проект.

после восстановления, предупреждение должно исчезнуть.


Я нашел этот вопрос, ищущий ту же ошибку в проекте веб-службы.

В моем случае эта ошибка произошла, когда я забыл добавить на IServiceBase интерфейс.

как только я добавил его в ошибку ушла.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace MyService
{
    [ServiceContract]
    public interface IServiceBase
    {
        [OperationContract]
        IEnumerable<ListItem> GetListItems();

        [OperationContract]
        void SaveListItems(IEnumerable<ListItem> listItems);
    }

та же ошибка возникает, когда отсутствует ссылка [в проекте с.config] к фактическому проекту / библиотеке, содержащей контракт интерфейса / службы...


в моем случае я изменил контракт на обслуживание, невольно удалив интерфейс, который был ключом к контракту на обслуживание.

недели спустя я нашел сломанного клиента с устаревшей ссылкой на службу. Поскольку удаление интерфейса было ошибкой, я вернул его обратно.

другим возможным решением было бы перестроить ссылку на службу в соответствии с новым контрактом на обслуживание (в моем случае это нарушило бы сборку проекта, так как ссылочный интерфейс были удалены).

спасибо OrangeKing89 для указывая мне в правильном направлении. Я знал, что контракт на обслуживание может быть изменен.


Я понимаю, что это старая нить, но в моем случае проблема заключалась в том, что кто-то в свое время добавил ссылку на сервис к проекту, а затем решил пойти другим путем, но запись осталась в интернете.config, поэтому просто удалите эту запись в web.config решил проблему для меня.


в моем случае у меня был конфликт имен.

при добавлении ссылки на службу visual studio создает класс клиента в качестве прокси-сервера, который реализует контракт, имя по умолчанию для этого прокси-сервера является именем службы, добавляемой "клиентом", поэтому, если ваша служба" MyService", класс клиента будет"MyServiceClient".

моя проблема заключалась в том, что мое имя проекта было "MyServiceClient" ! что и вызвало этот конфликт.


Я знаю, что этот вопрос древний, однако я столкнулся с той же проблемой с C# и Visual Studio 2017. Все работало и компилировалось отлично, тогда это было не так. Я понизил с .Net 4.6.2 до 4.6, так как SQLite v108 не поддерживает 108, тогда я получил эту ошибку и другие. Мне потребовалось некоторое время, чтобы найти решение. Я нигде не видел своего решения, поэтому я думал, что я размещаю его там на будущее.

Я удалил ссылку на службу, проверил все мои изменения в TFS, а затем добавил обратно ссылку на службу. Затем я построил решение и все снова было хорошо.

Я проверил приложение.config и другие файлы и все казалось прекрасным, просто не строились. Очевидно, VS2017 вводит информацию о версии .Net где-то, но не очевидно.

надеюсь, мое решение поможет кому-то.