Member 14601214 Ответов: 1

Первый элемент отсутствует при использовании потока в качестве входных данных в WCF rest service C#


У меня есть служба wcf rest с потоком в качестве входного параметра:

[OperationContract]
   [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
   void ImportStream(Stream data);


А это мой текст в качестве ввода в POSTMAN:

D_CA,P_AMOUNT,D_AN,D_PE,D_RU,D_NU,D_CO,D_MU,D_PMU,D_DP,P_COMMENT                              
A,100,,2019.12,S000,S000,S002,EUR,ORIG07-01,0000.PACKAGE,,,,,,2019.12,           
A,100,,2019.12,S000,,S004,EUR,ORIG07-01,0000.PACKAGE,,,,,,2019.12, 


В результате у меня есть textRead:
"_CA,P_AMOUNT,D_AN,D_PE,D_RU,D_ORU,D_AC,,D_GO,D_LE,D_NU,D_CO,D_MU,D_PMU,D_DP,P_COMMENT     ....... "


Как вы видите, первый символ " D " отсутствует !?

Как я могу это исправить ? Спасибо

Что я уже пробовал:

public void ImportStream(Stream data)
    {
        if (data.ReadByte() != -1)
        {                
            using (var reader = new StreamReader(data))
            {                               
                string textRead = reader.ReadToEnd();
            }
        }
}

1 Ответов

Рейтинг:
4

Kris Lantz

Согласно документации здесь: Метод Stream.ReadByte (System.IO) | Microsoft Docs[^], метод ReadByte() будет считывать первый байт потока и продвигаться на единицу, что означает

using (var reader = new StreamReader(data))
будет обрабатываться из данных[1], а не из данных[0].


Member 14601214

Спасибо за ваш ответ, это ясно ,
Теперь я понимаю ,
Это мой код. :

использование (var reader = new StreamReader(data))
{

allStreamString строка= читатель.ReadToEnd();

}