У меня есть операция с этим определением:
[OperationContract]
ResponseEntity SaveMeasurements(string token, Entity sample);
Вот сокращенный код реализации:
public ResponseEntity SaveMeasurements(string token, MetroSampleEntity sample)
{
// some other code goes here
provider.Query(new SampleDataTable());
}
Я получаю эту ошибку:
Произошла ошибка при попытке сериализации параметра http://tempuri.org/: dt . Сообщение InnerException «Тип» с именем контракта данных «SampleDataTable: http://schemas.datacontract.org/2004/07/» не ожидается. Рассмотрите возможность использования DataContractResolver, если вы используете DataContractSerializer или добавляете любые типы, которые не известны статически, в список известных типов - например, с помощью атрибута KnownTypeAttribute или добавляя их в список известных типов, передаваемых сериализатору.
Я пытаюсь использовать SampleDataTable
для внутренней транзакции, но WCF выбирает его как контракт данных ... или, по крайней мере, пытаюсь. Есть ли способ, которым я могу сказать WCF НЕ обрабатывать SampleDataTable
как часть контракта?
Спасибо!
ОБНОВЛЕНИЕ:
Спасибо Мар c за лидерство. Объект провайдера в коде на самом деле является другим клиентом WCF, чей запрос запроса принимает тип DataTable. Хотя SampleDataTable
расширяет DataTable
, Query()
НЕ "распознает его".