У меня есть простой Atom 1.0, который я сгенерировал, подобно the example shown on MSDN.Хостинг фида Atom WCF в IIS
Однако вместо создания хоста и тестирования фида через консольное приложение, как в примере, я пытаюсь создать конечную точку через конфигурацию.
Моя конфигурация выглядит следующим образом:
<system.serviceModel>
<services>
<service
name="MyNamespace.MyService"
behaviorConfiguration="returnFaults">
<endpoint
address=""
binding="basicHttpBinding"
contract="MyNamespace.IMyGenericService">
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="returnFaults">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Когда я запускаю моей службы WCF, я могу получить доступ к странице описания акции и даже использовать этот адрес в качестве ссылки на службу. Однако, если я попытаюсь вызвать метод, который возвращает фид (http://localhost:SomeVSPort/MyService/GetFeed), я получаю пустую страницу без ошибок. Установка точки останова в методе была неудачной, поскольку метод, похоже, не вызван.
Мой вопрос: как я могу разоблачить этот канал для хостинга через IIS? Должен ли я использовать другую конфигурацию для моей конечной точки?
Для справки, мое заявление службы следующим образом:
namespace MyNamespace
{
[ServiceContract]
public interface IMyGenericService
{
[OperationContract]
[WebGet]
Atom10FeedFormatter GetFeed();
}
public class MyService: IMyGenericService
{
public Atom10FeedFormatter GetFeed()
{
SyndicationFeed feed = new SyndicationFeed();
//SimpleEntry is a local class that holds location information in a GeoRSS Simple format.
IList<SimpleEntry> entries = new List<SimpleEntry>()
{
new SimpleEntry() { ID = "1", Point = "45.256 -71.92", Title = "Point 1" },
new SimpleEntry() { ID = "2", Point = "-71.92 45.256", Title = "Point 2" }
};
feed.Items = entries
.Select(e => new SyndicationItem()
{
Content = new XmlSyndicationContent(
"application/xml",
new SyndicationElementExtension(e)),
Title = new TextSyndicationContent(e.Title),
Id = e.ID
});
return new Atom10FeedFormatter(feed);
}
}
}