私は非常に基本的な WCF REST サービスを C# で作成しました。サービス インターフェイスには次のものが含まれています。
[OperationContract]
[WebGet(UriTemplate = "/stream", ResponseFormat = WebMessageFormat.Xml)]
Stream streamTest();
Service.svc.cs ファイルには、次の関数があります (明らかに、StreamUtility は参照として、使用法に含まれています)。
public Stream streamTest()
{
return StreamUtility.streamTest();
}
最後に、ストリーミング関数自体は次のようになります: (ここで見つけたソース コードに基づいて、大きな任意の文字列をメモリ ストリームとして返します: http://www.codeproject.com/Articles/35982/REST-WCF-and-Streams -Getting-Rid-of-these-Names-Sp )
public static Stream streamTest()
{
string result = "skdjdfnlsakdjfnasdlkjfnasdkjkfnasldkjfnasdlkjfnasdlkfjnasdldkfjnassdlfkjnadsdlfkjasndflkjsanflaskjdfnalskdkjnfalskfjnslidifubsaoicubuiewnfpoiowneflskjdfansdufawneifuenfgiwe";
for (int i = 0; i < 5; i++)
{
result += result;
}
Encoding encoding = Encoding.GetEncoding("ISO-8859-1");
byte[] returnBytes = encoding.GetBytes(result);
return new MemoryStream(returnBytes);
}
残念ながら、この機能は、私が識別できる理由もなく、正しく機能していないようです。localhost:XXXXX/Service.svc/stream に移動してブラウザ経由で関数を呼び出すと、読み込み中のアイコンが表示されてからフリーズします。
この質問に答えようとする Web サイトをいくつか見つけることができましたが、それらのコードは実際には機能しません。上記のコードを見つけた場所には、機能しない行があります。
WebOperationContext.Current.OutgoingResponse.ContentType = "text/plain";
この行に下線が引かれるのは、プログラムが WebOperationContext 参照を見つけることができず、サイトからソース コードをダウンロードしたにもかかわらず、WebOperationContext の参照がどこにあるのかわからないためです。
WCFでRESTサービスを介してデータをストリーミングする方法を誰かが正確に教えてくれれば(上記の方法でなくても)、大歓迎です。ありがとうございました。