我在C#寫了一個非常基本的WCF REST服務,已在服務界面以下流的字符串:如何從WCF REST服務
[OperationContract]
[WebGet(UriTemplate = "/stream", ResponseFormat = WebMessageFormat.Xml)]
Stream streamTest();
在Service.svc.cs文件,它具有這個功能(顯然StreamUtility是作爲參考,在usings):
public Stream streamTest()
{
return StreamUtility.streamTest();
}
最後流函數本身看起來像這樣:(它返回一個大的任意字符串作爲內存流基於源代碼,我發現這裏:http://www.codeproject.com/Articles/35982/REST-WCF-and-Streams-Getting-Rid-of-those-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);
}
不幸的是,這個功能似乎沒有任何理由,我可以辨別正常工作。當我通過瀏覽器訪問本地主機時調用該函數:XXXXX/Service.svc/stream它顯示一個加載圖標,然後簡單地凍結。
我已經能夠找到一些網站,試圖回答這個問題,但他們的代碼實際上沒有任何作品。在那裏我發現上面的代碼的地方有一行不工作:
WebOperationContext.Current.OutgoingResponse.ContentType = "text/plain";
這條線被強調,因爲該程序無法找到WebOperationContext參考,我不知道它會被定位,儘管有從僅包含兩個C#文件的站點下載源代碼,但不能實際運行。
如果任何人都可以告訴我如何通過WCF中的REST服務流數據(即使它不是通過上述方法),將不勝感激。謝謝。
既然你正在返回的流時,'ResponseFormat = WebMessageFormat.Xml'是不對的。嘗試刪除響應格式。 – 2012-07-16 20:22:58
'WebOperationContext'是'System.ServiceModel.Web'命名空間的一個輔助類。除此之外,我可以看到你的代碼沒有問題:我剛剛實現了類似的方法,並且按照預期工作 – Zruty 2012-07-18 08:05:50