在 wcf rest C# 中始终输入参数为 NULL
Always the input parameter is NULL in wcf rest C#
我有服务 "ImportStream" wcf post :
[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
void ImportStream(StreamObject data);
和 class StreamObject :
[DataContract]
public class StreamObject
{
[DataMember]
public Char Comma { get; set; }
[DataMember]
public Stream Stream { get; set; }
}
我的代码:
public void ImportStream(StreamObject data)
{
// ....
}
我用 POSTMAN 测试它:
{
"Comma": ",",
"Stream": "test;;;;test2,result....!!!!"
}
但我的数据总是空的!!我不明白这是什么问题?
我该如何解决?
我不知道如何在Json序列化
中使用Stream
我看到的第一个问题是 Stream
是一个抽象 class。如何反序列化?
另一个问题是不是所有的流都可以序列化:
var value = new StreamObject { Comma = ',' };
value.Stream = new MemoryStream(Encoding.ASCII.GetBytes("turn left then right and go straight"));
var str = System.Text.Json.JsonSerializer.Serialize(value);
在尝试序列化 MemoryStream 时引发类似 Timeouts are not supported on this stream.
的错误。
请考虑使用 byte[]
或 string
数据类型,而不是 Stream
。
根据您展示的 Postman 示例,您可以将其与 string
一起使用:
[DataContract]
public class StreamObject
{
[DataMember]
public Char Comma { get; set; }
[DataMember]
public string Stream { get; set; }
}
我有服务 "ImportStream" wcf post :
[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
void ImportStream(StreamObject data);
和 class StreamObject :
[DataContract]
public class StreamObject
{
[DataMember]
public Char Comma { get; set; }
[DataMember]
public Stream Stream { get; set; }
}
我的代码:
public void ImportStream(StreamObject data)
{
// ....
}
我用 POSTMAN 测试它:
{
"Comma": ",",
"Stream": "test;;;;test2,result....!!!!"
}
但我的数据总是空的!!我不明白这是什么问题? 我该如何解决?
我不知道如何在Json序列化
中使用Stream
我看到的第一个问题是 Stream
是一个抽象 class。如何反序列化?
另一个问题是不是所有的流都可以序列化:
var value = new StreamObject { Comma = ',' };
value.Stream = new MemoryStream(Encoding.ASCII.GetBytes("turn left then right and go straight"));
var str = System.Text.Json.JsonSerializer.Serialize(value);
在尝试序列化 MemoryStream 时引发类似 Timeouts are not supported on this stream.
的错误。
请考虑使用 byte[]
或 string
数据类型,而不是 Stream
。
根据您展示的 Postman 示例,您可以将其与 string
一起使用:
[DataContract]
public class StreamObject
{
[DataMember]
public Char Comma { get; set; }
[DataMember]
public string Stream { get; set; }
}