1

私は非常に基本的な 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サービスを介してデータをストリーミングする方法を誰かが正確に教えてくれれば(上記の方法でなくても)、大歓迎です。ありがとうございました。

4

1 に答える 1

0

GETとPOSTのみを使用する場合は、次の記事が役立つ場合があります。

RESTful WCFサービスの開発に関するCodeProject (これは私が個人的に採用した方法です)

ここで説明するようにWebHttpBindingを使用して、PUTとDELETEも提供できます。

JSONを使用したWCFRESTサービス

さらに簡単な例はここにあります(これもWebHttpBindingを使用しています)

WCFRESTのストリーミングに関するMSSocial

于 2012-07-16T19:09:17.273 に答える