public async Task <string> Post() { var parsedRequest = new JObject(); var result = "ok"; try { using (var reader = new StreamReader(Request.Body, Encoding.UTF8)) { var request = await reader.ReadToEndAsync(); try { parsedRequest = JObject.Parse(request); } catch { throw new JsonReaderException("Не удалось преобразовать JSON"); } } // await Response.Body.WriteAsync(Encoding.UTF8.GetBytes("ok")); if (parsedRequest["type"] == null) { throw new Exception("Запрос не имеет свойство type"); } //Проверка Secret Key var config = Configuration.GetInstance(); if (!string.IsNullOrEmpty(config.GetConfig("vkSecretKey"))) { if (parsedRequest["secret"].ToString() != config.GetConfig("vkSecretKey")) { //Ключи неверные _logger.Log(LogLevel.Warning, "Request from undefined server. Secret keys does not match. Server IP: " + this.Request.Host.Host + Environment.NewLine + "Request: " + parsedRequest.ToString()); Response.StatusCode = 403; return("Forbidden"); } } switch (parsedRequest["type"].ToString()) { case "confirmation": result = VkHelper.GetConfirmationToken(); break; case "message_new": handleNewMessage(parsedRequest["object"]); break; default: throw new Exception("Неопознанный тип запроса: " + parsedRequest["type"]); } } catch (Exception e) { //Что-то сломалось result = e.Message; _logger.Log(LogLevel.Error, e.Message); } return(result); }