Всегда входной параметр равен NULL в wcf rest C# - PullRequest
0 голосов
/ 13 января 2020

У меня есть служба "ImportStream" wcf post:

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

И класс 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....!!!!"
}

но всегда у меня есть данные NULL !! Я не понимаю, что это за пробм? Как я могу это исправить?

1 Ответ

1 голос
/ 13 января 2020

Я не знаю, как использовать Stream в сериализации Json

Первая проблема, которую я вижу, состоит в том, что Stream является абстрактным классом. Как его можно десериализовать?

Другая проблема заключается в том, что не все потоки могут быть сериализованы:

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);

вызывает ошибку, такую ​​как Timeouts are not supported on this stream., при попытке сериализации MemoryStream.

Пожалуйста, рассмотрите возможность использования типа данных byte[] или string, но не Stream.

Вы можете использовать его с string в соответствии с примером почтальона, который вы показали:

[DataContract]
public class StreamObject
{
    [DataMember]
    public Char Comma { get; set; }
    [DataMember]
    public string Stream { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...