Служба WCF для возврата iCal - PullRequest
3 голосов
/ 05 октября 2009

Как мне написать свой сервис с WCF для возврата iCal? Примеры, которые я вижу, используют xml или json как способ форматирования ответа. Каков наилучший способ вернуть другие типы органов реагирования?

Ответы [ 2 ]

3 голосов
/ 06 октября 2009

Примерно так:

[WebGet(UriTemplate="{id}.ics")]
[OperationContract]
Stream GetCalendar(int id)
{
   WebOperationContext.Current.OutgoingResponse.ContentType="text/calendar";

   //Now just return the appropriate data in iCal format in the Stream...
}

Так что теперь вы можете сделать HTTP GET, например, к. yourService.svc / 123.ics и получите обратно iCal.

Причина, по которой это работает, заключается в том, что «Поток» имеет специальный регистр в WCF REST (используется для ответов не-XML, не JSON).

Помните, что для этого нужно использовать поведение WebHttpBinding и WebHttp.

1 голос
/ 05 октября 2009

Самое простое решение - вернуть представление iCal в формате XML или JSON (на ваш выбор) в виде простой строки из вашего вызова WCF:

[ServiceContract]
interface IMyCalService
{
  [OperationContract]
  string GetiCal(.......);
}

, а затем продолжайте и обрабатывайте его на клиенте, как только вы получите строку, содержащую iCal XML (или JSON). Это можно сделать с помощью стандартного WCF с использованием SOAP.

Другими способами это может быть использование службы REST WCF, которая возвращает ответ в формате iCal, когда вы нажимаете на определенный URL - для этого потребуется установить стартовый комплект WCF Rest * на данный момент ( в .NET 3.0 / 3.5). Я не очень хорошо знаком с форматом iCal, но уверен, что так или иначе вы сможете создать необходимый формат XML для удовлетворения требований iCal.

Марк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...