Фон
Преобразование с использованием .Net Remoting в WCF. Большинство методов на сервере WCF работают нормально, но столкнулись с тем, что сегодня не работает.
Это договор на обслуживание:
[ServiceContract]
public interface IMyService
{
[OperationContract]
generated.Response.ACS_Response Check(generated.Request.ACS_Request request);
}
Я перехватил остальные методы этого интерфейса, так как они работают. По сути, я пытаюсь передать объект запроса и получить объект ответа.
Классы для ACS_Response и ACS_Reqeust создаются с использованием XSD.exe для файла XSD. Эти классы находятся в сборке Api, на которую ссылаются как клиент WCF, так и хост WCF.
Задача
Я могу сделать вызов хосту WCF и объекту запроса, и хост может выполнить свою работу. Когда хост пытается вернуть объект Response, я сталкиваюсь с исключением.
Я включил трассировку для WCF и вижу исключение SerializationException:
Type 'Api.generated.Response.ACS_ResponseQuestion'
with data contract name 'ACS_ResponseQuestion:http://...' is
not expected. Add any types not known statically.........
Вопросы
Во-первых, я в замешательстве, потому что я могу успешно отправить объект Request, так что может показаться, что основы работают.
Во-вторых, эта сериализация работала в .Net Remoting. Все классы генерируются WSDL, поэтому они не должны быть сериализуемыми как есть?
В-третьих, хост и клиент ссылаются на одну и ту же сборку Api, которая определяет эти классы, поэтому они известны и серверу, и клиенту.