WCF服务返回iCal

时间:2009-10-05 19:02:25

标签: html wcf format response

如何使用WCF写入我的服务以返回iCal?我看到的例子使用xml或json作为格式化响应的方式。返回其他类型的响应主体的最佳方法是什么?

2 个答案:

答案 0 :(得分: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行为。

答案 1 :(得分:1)

最简单的解决方案是将XML或JSON格式的iCal表示(您的选择)作为WCF调用中的简单字符串返回:

[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要求。

马克