我遇到的問題是客戶端正在向我發送一串數據作爲流。然後,WCF規範化(刪除CRLF的CR部分),並且在該特定字符串上的服務器和客戶端之間發生散列不匹配。WCF - 流參數缺少CRLF的CR
public void SomeWcfContract(Stream input)
{
try
{
string processed = ReadStream(input);
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.OK;
}
catch (Exception ex)
{
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.InternalServerError;
}
}
private string ReadStream(Stream input)
{
string output;
using (var reader = new StreamReader(input, Encoding.UTF8))
{
output = reader.ReadToEnd();
}
return output;
}
我讀了關於這個職位在這裏:XML deserialization 'standardising' line endings, how to stop it? (.NET)
這是完全一樣的問題,我有,但我使用WCF標準XmlSerializer的。我是否需要創建自己的XmlSerializer實現,或者可以以某種方式將「修復」添加到設置中?
這似乎是一個很討厭的錯誤與WCF XmlDictionaryReader發生的事情是,當WCF序列化輸入流的Message的(CRLF)回車所有實例被刪除並替換爲LF。根據this這是WCF中的一個已知錯誤。 編輯我報這個bug微軟:https://connect.microsoft.com/wcf/feedback/details/532196/xmldictionaryreader-is-normalizing-incoming-stream-removing-cr-of-crlf#details