Я хотел бы предоставить SyndicationFeedFormatter с wcf и basicHttpBinding. Я продолжаю получать ошибки, подобные показанным ниже. Я включил интерфейс / класс и конфигурацию wcf web.config.
Я пытался выставить SyndicationFeedFormatter, а также IList, но не смог обойти следующую ошибку. Кто-нибудь смог это сделать или кто-то подтвердил, в чем проблема?
thx - Дэйв
Сообщение об ошибке
System.ServiceModel.Dispatcher.NetDispatcherFaultException: средство форматирования выдало исключение при попытке десериализации сообщения: при попытке десериализации параметра произошла ошибка http://tempuri.org/:GetFeaturesResult. Сообщение InnerException было «Ошибка в строке 1, позиция 123. Элемент http://tempuri.org/:GetFeaturesResult' содержит данные контракта данных http://schemas.datacontract.org/2004/07/System.ServiceModel.Syndication:Rss20FeedFormatter'
Мой интерфейс / контракт выглядит как
[ServiceContract]
[ServiceKnownType(typeof(Atom10FeedFormatter))]
[ServiceKnownType(typeof(Rss20FeedFormatter))]
public interface IGetData {
[OperationContract]
SyndicationFeedFormatter GetFeatures();
[OperationContract]
IList<SyndicationItem> GetFeatures2();
}
Мой метод выглядит так ...
public SyndicationFeedFormatter GetFeatures()() {
// Generate some items...
SyndicationFeed feed = new SyndicationFeed() {
Title = new TextSyndicationContent("Mike's Feed"),
Description = new TextSyndicationContent("Mike's Feed Description")
};
feed.Items = from i in new int[] { 1, 2, 3, 4, 5 }
select new SyndicationItem() {
Title = new TextSyndicationContent(string.Format("Feed item {0}", i)),
Summary = new TextSyndicationContent("Not much to see here"),
PublishDate = DateTime.Now,
LastUpdatedTime = DateTime.Now,
Copyright = new TextSyndicationContent("MikeT!"),
};
return (new Rss20FeedFormatter(feed));
}
public IList<SyndicationItem> GetFeatures2() {
List<string> includeList = new List<string>();
includeList.Add("Feature");
IList<SyndicationItem> mylist = ReaderManager.GetFeedByCategory2(includeList, null, null);
return mylist;
}
Мой web.config выглядит следующим образом
binding = "webHttpBinding" contract = "SLNavigationApp.Web.IGetData">
->
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="webHttpBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="SLNavigationApp.Web.GetDataBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>