如何使用WCF写入我的服务以返回iCal?我看到的例子使用xml或json作为格式化响应的方式。返回其他类型的响应主体的最佳方法是什么?
答案 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要求。
马克