Клиент ServerEventsClient ServiceStack не может обрабатывать события со строками, содержащими пробелы.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Клиент ServerEventsClient ServiceStack не может обрабатывать события со строками, содержащими пробелы.

Сообщение Anonymous »

Я создал сервер Java Springboot, который получает и передает сообщения клиентам C# и JS.
При отправке сообщений без пробелов сообщение правильно транслируется на все клиенты. Однако когда я добавляю пробел, я получаю исключение («OnException») от клиента C#. Он отлично работает с клиентом JS (не ServiceStack). Неважно, где и сколько пробелов, один пробел приводит к сбою клиента.
Трассировка стека:

Код: Выделить всё

System.ArgumentException: Invalid Selector '{"characterId":"6ed46423-6d70-4aae-a37f-4f5e799d326b","message":"\"hello'
at ServiceStack.ServerEventsClient.ToTypedMessage(ServerEventMessage e) in /home/runner/work/ServiceStack/ServiceStack/ServiceStack/src/ServiceStack.Client/ServerEventsClient.cs:line 804
at ServiceStack.ServerEventsClient.ProcessEventMessage(ServerEventMessage e) in /home/runner/work/ServiceStack/ServiceStack/ServiceStack/src/ServiceStack.Client/ServerEventsClient.cs:line 859
at ServiceStack.ServerEventsClient.c__DisplayClass115_0.
b__0(Task`1 t) in /home/runner/work/ServiceStack/ServiceStack/ServiceStack/src/ServiceStack.Client/ServerEventsClient.cs:line 725
В приведенном выше примере после первого слова («привет») есть пробел.
Сообщение представляет собой DTO с Guid CharacterId и строковым сообщением< /code>.
Код:
Сервер Java Springboot:

Код: Выделить всё

    @PostMapping(path = "/message")
public boolean sendMessage(@RequestBody DTOs.MessageDTO request) {
for(SseEmitter sseEmitter: emitters){
try {
sseEmitter.send(request);
} catch (IOException e) {
throw new RuntimeException(e);
}
});

return true;
}
Клиент C#, использующий стек служб:

Код: Выделить всё

    private ServerEventsClient _create_sse_client()
{
baseUri = $"...";

return new ServerEventsClient(baseUri)
{
OnMessage = this._events.Enqueue,
OnException = errors.Add,
OnCommand = this._commands.Enqueue,
AllRequestFilters = req =>
{
req.Method = HttpMethod.Get;
req.AddHeader("Accept", "text/event-stream");
},
};
}
Я новичок в C#, поэтому мне интересно, есть ли здесь что-то очевидное, что я упускаю.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ings-conta
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»