Azure WebJob日志控制台显示错误的符号,但IDE控制台显示正确的输出

pjngdqdw  于 2023-04-12  发布在  其他
关注(0)|答案(1)|浏览(164)

我使用Rider IDE开发Dot.Net应用程序,我将其作为WebJob部署到Microsoft Azure。出于测试目的,我从WebSocket输出JSON字符串(它侦听Binance UserStream),我发现了一个奇怪的问题,当Azure Logs Console在这些字符串的末尾显示了很多不支持的符号时,而Rider IDE Console则没有:
Correct Rider Console Screenshot
Wrong Azure Logs Console Screenshot
看起来情况与Console OutputEncoding有关,所以我试图在应用程序启动时设置它,但它无法解决问题:

Console.OutputEncoding = Encoding.UTF8;

也许,我需要以某种方式转义这个字符串之前,我记录他们的正确行为?

lmyy7pcs

lmyy7pcs1#

最后,我发现了问题:WebSocket将数据读入固定大小的buffer中,然后以字符串的形式返回,字符串的大小与buffer的大小相同。当我将此字符串输出到Console时,Rider只显示字符串的Json部分,但WebJob日志输出的是Json部分+结尾的所有可空字符。
我添加了这个简单的代码,只输出字符串的Json部分,假设每个Json都以'}'字符结尾:

int lastCharacterIndex = data.LastIndexOf('}');
Console.WriteLine($"Trader::OnMessageReceived(): {data.Substring(0, lastCharacterIndex + 1)}");

相关问题