3

サービスを WCF で作成して iCal を返すにはどうすればよいですか? 私が見た例では、応答をフォーマットする方法として xml または json を使用しています。他のタイプのレスポンスボディを返す最良の方法は何ですか?

4

2 に答える 2

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

これで、たとえば yourService.svc/123.ics に対して HTTP GET を実行して、iCal を取得できます。

これが機能する理由は、「ストリーム」が WCF REST で特殊なケースになっているためです (非 XML、非 JSON 応答に使用されます)。

これを機能させるには、WebHttpBinding と WebHttp の両方の動作を使用する必要があることに注意してください。

于 2009-10-05T23:17:26.310 に答える
1

最も簡単な解決策は、WCF 呼び出しから単純な文字列として XML または JSON 形式 (任意の選択) で iCal 表現を返すことです。

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

iCal XML (または JSON) を含む文字列を受け取ったら、クライアントでさらに処理します。これは、SOAP を使用して標準の WCF で実行できます。

それを行う他の方法は、特定の URL にヒットしたときに iCal 形式で応答を返す WCF REST サービスを使用することです。これには、当分の間 (.NET 3.0/3.5 で) WCF Rest Starter Kitをインストールする必要があります。私は iCal フォーマットに詳しくありませんが、何らかの方法で iCal の要件を満たすために必要な XML フォーマットを構築できると確信しています。

マルク

于 2009-10-05T19:26:36.157 に答える