Как создать WebHook MVC страницу?

87
14 марта 2021, 08:10

Мне необходимо приложение "WinForm" для переписки в viber.
"Webhook" планируется для получения данных(событий) из viber, далее полученные данные будут использоваться в приложении "WinForm".

Я сделал:

  1. создал проект "Веб приложение ASP.NET (.NET Framework)";
  2. выбрал шаблон - "Пустой" + "MVC" + "API";
  3. добавил котроллер "Контроллер MVC 5 - пустой". Имя контроллера "HookController";
  4. запускаю приложение "Postman";
  5. "Postman". устанавливаю запрос "POST" ;
  6. "Postman". устанавливаю ссылку "http://localhost:44836/Hook";
  7. "Postman". Нажимаю "SEND";
  8. Результат см. картинку "-= RESULT =-";

Если я правильно понял теорию, то после выполнения действия "Postman". Нажимаю "SEND", в котроллере HookController.cs должен выполняться метод ViberProcess(HttpContext context) и код должен остановиться в точке останова.
Этого не происходит.

Документация Viber REST API - ссылка

Вопрос.
Как правильно сделать "Webhook"?

Код HookController.cs

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
//
using System.Runtime.Remoting.Contexts;
namespace WebAppl1.Controllers
{
    public class HookController : Controller
    {
        // GET: Hook
        //public ActionResult Index()
        //{
        //    return View();
        //}
         [HttpPost]
        // [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public void ViberProcess(HttpContext context)
        {
            try
            {
                Stream s = context.Request.InputStream;
                // Stream s = Context.Request.InputStream;
                // or  Stream s  =  HttpContext.Current.Request.InputStream;
                s.Position = 0;
                StreamReader reader = new StreamReader(s);
                string jsonText = reader.ReadToEnd();
                // Other code that converts json text to classes
            }
            catch (Exception e)
            {
                // .....
            }
        }
    }
}

Обновление_1
Переименовал метод ViberProcess в Index.
Результат:
`Ошибка сервера в приложении '/'. Для данного объекта не определено беспараметрических конструкторов. Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода.

Сведения об исключении: System.MissingMethodException: Для данного объекта не определено беспараметрических конструкторов.

Ошибка источника: Необработанное исключение при выполнении текущего веб-запроса. Информацию о происхождении и месте возникновения исключения можно получить, используя следующую трассировку стека исключений.`

Answer 1

В общем, я не знаю, зачем вам именно это решение и почему вы считваете весь входящий поток как строку, а не как JSON объект, но вы ваш код можете поправиь аот так

public class HomeController : Controller
{
    [System.Web.Http.HttpPost]
    public string Index()
    {
        using (var reader = new StreamReader(Request.InputStream))
            return reader.ReadToEnd();
    }
}

И вы сможете возвращать переданную на сервер строку

Подробей о там, как начать программировать с asp.net mvc вы можете узнать тут или тут

READ ALSO
Передача Int массива из C# в Dll на C++

Передача Int массива из C# в Dll на C++

Пытаюсь передать массив Int из C# в C++Выскакивает ошибка:

130
TrimmingText для TextBlock с MultiBinding

TrimmingText для TextBlock с MultiBinding

Не получается решить проблемуУ меня есть TextBlock, который показывает имя файла и расширение

107
c# excel interop. Отчет по датам

c# excel interop. Отчет по датам

Интересует вопрос формирования отчета в ExcelИмеется база данных

118