C# LSP «Заголовок сообщения должен разделять ключ и значение с помощью ошибки ':'» во время инициализации с помощью OmniC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 C# LSP «Заголовок сообщения должен разделять ключ и значение с помощью ошибки ':'» во время инициализации с помощью Omni

Сообщение Anonymous »

Я пытаюсь создать игрушечный сервер протокола языкового сервера (LSP) на C# с помощью OmniSharp, но постоянно сталкиваюсь со следующей ошибкой:

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

Message header must separate key and value using ':'
Эта ошибка обычно возникает, когда сообщения JSON-RPC не отформатированы должным образом. Однако я предполагал, что все объекты OmniSharp будут правильно отформатированы, поэтому не понимаю, что происходит не так. Ошибка возникает сразу после инициализации, поэтому ни один из последующих обработчиков (например, DidOpen, DidChange и т. д.) не срабатывает.

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

namespace ModdingToolChain
{
public class Program
{
public static async Task Main(string[] args)
{
var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddConsole(); // Configure console logging
});
var logger = loggerFactory.CreateLogger();

FileLogger.Initialize("C:\\Users\\Admin\\source\\repos\\ModdingLSP\\ModdingToolChain\\Logs\\debug.txt", "[Program]"); // For debugging
FileLogger.Log("Initialized");

logger.LogInformation("Starting LSP server...");

try
{
var server = await LanguageServer.From(options =>
options
.WithInput(Console.OpenStandardInput())
.WithOutput(Console.OpenStandardOutput())
.WithHandler()
.WithHandler()
.OnInitialize((server, request, token) =>
{
logger.LogInformation("LSP Server Initialized with request: " + request);
if (request is InitializeParams initParams)
{
FileLogger.Log($"ProcessId: {initParams.ProcessId}");
FileLogger.Log($"ClientInfo: {initParams.ClientInfo}");
// Log other properties as needed
}

var response = new InitializeResult
{
Capabilities = new ServerCapabilities
{
TextDocumentSync = TextDocumentSyncKind.Full,
HoverProvider = true,
CodeActionProvider = true,
},
ServerInfo = new ServerInfo
{
Name = "ModdingLSP",
Version = "1.0.0",
}
};

FileLogger.Log("Response: " + response);
return Task.FromResult(response);
})
.OnStarted((server, token) =>
{
FileLogger.Log("LSP Server Initialized");
logger.LogInformation("LSP Server Initialized");
return Task.CompletedTask;
})
).ConfigureAwait(false);

await server.WaitForExit.ConfigureAwait(false);
}
catch (Exception ex)
{
FileLogger.Log($"An error occurred while running the LSP server. {ex}");
logger.LogError(ex, "An error occurred while running the LSP server.");
}

logger.LogInformation("LSP server stopping...");
}
}
}
Я использую Console.OpenStandardInput() и Console.OpenStandardOutput() для потоков ввода и вывода. У меня есть журналирование, и вот что отображается в журналах отладки во время инициализации:

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

2024-10-22 21:32:40 [Program] Initialized
2024-10-22 21:32:40 [Program] ProcessId: 36396
2024-10-22 21:32:40 [Program] ClientInfo: Visual Studio Code (1.94.1)
2024-10-22 21:32:40 [Program] Response: InitializeResult { Capabilities = OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities.ServerCapabilities, ServerInfo = ModdingLSP (1.0.0) }
2024-10-22 21:32:42 [Program] Initialized
2024-10-22 21:32:43 [Program] ProcessId: 36396
2024-10-22 21:32:43 [Program] ClientInfo: Visual Studio Code (1.94.1)
2024-10-22 21:32:43 [Program] Response: InitializeResult { Capabilities = OmniSharp.Extensions.LanguageServer.Protocol.Server.Capabilities.ServerCapabilities, ServerInfo = ModdingLSP (1.0.0) }
Кажется, он инициализируется, но сразу же происходит сбой с типичной ошибкой JSON-RPC. Вот основной вопрос: что-то не так с тем, как я настраиваю потоки ввода/вывода или обрабатываю протокол JSON-RPC?
Буду признателен за любую помощь или подсказки!

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • C# LSP «Заголовок сообщения должен разделять ключ и значение с помощью ошибки ':'» во время инициализации с помощью Omni
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Управление положением тактильного устройства (Phantom Omni)
    Anonymous » » в форуме C++
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Не может импортировать `qwenforcausallm` после установки` v4.51.3-qwen2.5-omni-preview` Tag; PIP устанавливает 4.52.0.de
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Lazyvim LSP игнорируйте ошибки
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Прекратите разделять слова переносом слов
    Anonymous » » в форуме CSS
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

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