2009-10-05 107 views
3

如何使用WCF寫入我的服務以返回iCal?我看到的例子使用xml或json作爲格式化響應的方式。返回其他類型的答覆機構的最佳方式是什麼?WCF服務返回iCal

回答

1

最簡單的解決辦法是在XML或JSON格式(你挑)作爲一個簡單的字符串從WCF調用返回的iCal表示:

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

,然後繼續和進一步處理它在客戶端上,一旦你收到包含iCal XML(或JSON)的字符串。這可以通過使用SOAP的標準WCF來完成。

其他方法可能會使用WCF REST服務,當您點擊特定的URL時會返回iCal格式的響應 - 這需要暫時安裝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。

這個工作原因是「Stream」是WCF REST(用於非XML,非JSON響應)的特殊包裝。

請記住,您必須同時使用WebHttpBinding和WebHttp行爲才能工作。

+0

任何機會,你可以擴大最後一句「記住,你必須使用WebHttpBinding和WebHttp行爲這個工作。」? – Drammy 2012-10-12 14:34:56

+0

在您的服務配置中,您需要同時使用http://msdn.microsoft.com/en-us/library/bb412176.aspx和http://msdn.microsoft.com/en-us/library/bb924425.aspx – 2012-10-12 17:20:32