我有一个wcf rest服务,其中Stream作为输入参数:
[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
void ImportStream(Stream data);
我的代码:
public void ImportStream(Stream data)
{
if (data.ReadByte() != -1)
{
using (var reader = new StreamReader(data))
{
string textRead = reader.ReadToEnd();
}
}
}
这是我在POSTMAN中输入的文字:
D_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
A,100,,2019.12,S000,S000,XA1810,F00,PACK01,,S002,EUR,ORIG07-01,0000.PACKAGE,,,,,,2019.12,
A,100,,2019.12,S000,S000,XA1810,F00,PACK01,,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'不见了!?
我该如何解决?谢谢
ReadBytes
的问题,请参阅文档
FileStream.ReadByte方法
从文件中读取一个字节并将读取位置前进一个字节。
将流位置设置为文件的开头。
public void ImportStream(Stream data)
{
if (data.ReadByte() != -1)
{
data.Seek(0, SeekOrigin.Begin);
using (var reader = new StreamReader(data))
{
string textRead = reader.ReadToEnd();
}
}
}