我在WCF服務中接收發布數據時遇到問題。如果我嘗試使用InputStream,我會得到一個異常。 「調用HttpRequest.GetBufferlessInputStream後,此方法或屬性不受支持」我應該如何使用HttpRequest.GetBufferlessInputStream?
我相信我理解爲什麼會引發此錯誤,但我尚未成功解決此問題。有一個關於這個問題的現有帖子指出了幾個解決方法 - Visual Studio 2012 install broke my 2010 WCF project
我使用的是.Net 4.5,所以我遵循了在帖子中提出的解決方案,但無濟於事。嘗試訪問InputStream時,我仍然遇到錯誤。
如果我知道如何正確處理無緩衝輸入流,那對我來說並不是真正的問題。當我查看流的長度時,它似乎包含我發送的數據,但是當我使用StreamReader讀取它時,它始終不返回任何內容。如果我只是調用Stream.Read(),它總是顯示爲空。
我的理解是,出於可擴展性的原因,緩衝輸入被替換爲無緩衝輸入,但它似乎有些不直觀。有誰知道如何正確處理無緩衝輸入?你能提供一個例子嗎?
我已嘗試這兩個:
var result = string.Empty;
Stream stream = context.Request.GetBufferlessInputStream();
byte[] b = new byte[100000];
while ((n = stream.Read(b, 0, b.Length)) > 0)
{
result += n;
}
和
var stream = context.Request.GetBufferlessInputStream();
var streamContent = new StreamReader(stream).ReadToEnd()