Я уже несколько дней чесал голову с этим, и я надеюсь, что кто-то может предложить кое-что для понимания.Во-первых, исключение ...
Исключение было возвращено действием: средство форматирования выдало исключение при попытке десериализации сообщения: при попытке десериализации параметра * 1005 произошла ошибка* Сообщение InnerException было «Ошибка в строке 1, позиция 837. Элемент» http://schemas.datacontract.org/2004/07/Agatha.Common.Request' содержит данные из типа, который сопоставляется с именем «http: // schemas.datacontract.org/2004/07/ MyCompany.MyProduct.Services.Contracts.Customers: ReadAllCustomersRequest.Десериализатор не знает ни одного типа, который сопоставляется с этим именем.Попробуйте использовать DataContractResolver или добавить тип, соответствующий «ReadAllCustomersRequest», в список известных типов, например, с помощью атрибута KnownTypeAttribute или добавив его в список известных типов, передаваемых в DataContractSerializer. '.Пожалуйста, смотрите InnerException для более подробной информации.
Хорошо, это честно.Похоже, что сериализатор не знает, что мой тип (ReadAllCustomersRequest) наследуется от запроса Агаты.Странно, так как Агата должна иметь дело с этим во время конфигурации.Моя конфигурация уровня обслуживания выглядит следующим образом ...
// NOTE: A Unity container (re: the container variable) is built upelsewhere.
var agathaServiceConfiguration = new ServiceLayerConfiguration(new Container(container));
agathaServiceConfiguration.AddRequestHandlerAssembly(typeof(ReadAllCustomersHandler).Assembly);
agathaServiceConfiguration.AddRequestAndResponseAssembly(typeof(ReadAllCustomersRequest).Assembly);
agathaServiceConfiguration.Initialize();
Обратите внимание, что мои типы обработчиков находятся в той же сборке, что и этот код (MyCompany.MyProduct.Services).Мои типы запросов и ответов, однако, находятся в другой сборке (MyCompany.MyProduct.Services.Contracts).Ничего страшного.В конце концов, я в основном скопировал «Hello World» Брайона (и сослался на примеры из источника Агаты).
Дело в том, что все это работает просто отлично.Нет ошибок вообще ... при локальном запуске (Win7 / VS2010 / Cassini).Однако, если я отправлю серверный шебанг на сайт IIS 7.5, я получу исключение выше.Те же скомпилированные сборки.Тот же файл конфигурации.Отличный результат.О, IIS ... как я люблю тебя.
Я очень сомневаюсь, что это проблема Агаты, поскольку, как я уже сказал, она работает очень хорошо локально.Мне просто интересно, есть ли у кого-нибудь ключ к пониманию того, почему он не работает, когда я выкидываю его на удаленный сервер.Я, вероятно, упускаю что-то очень, очень очевидное.
О, и что бы это ни стоило, на сайте IIS 7.5 размещаются не-Agatha (boo!) Сервисы просто отлично.Мои конечные точки mex тоже перечисляются просто отлично.О, и Элма ничего не записывает на стороне сервера.Все нормально, пока я не отправлю запрос от клиента.
Итак, что-то в моем развертывании не работает, но это поставило меня в тупик.Есть идеи?