2009-10-05 3 views
3

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

ответ

1

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

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

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

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

Марк

3

Что-то вроде этого:

[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.

+0

Любой шанс, который вы можете расширить на последнем предложении «Помните, что для этого вам нужно использовать поведение WebHttpBinding и WebHttp».? – Drammy

+0

В конфигурации вашего сервиса вам необходимо использовать как http://msdn.microsoft.com/en-us/library/bb412176.aspx, так и http://msdn.microsoft.com/en-us/library/bb924425.aspx –

 Смежные вопросы

  • Нет связанных вопросов^_^