Мне необходимо приложение "WinForm" для переписки в viber.
"Webhook" планируется для получения данных(событий) из viber, далее полученные данные будут использоваться в приложении "WinForm".
Я сделал:
Если я правильно понял теорию, то после выполнения действия "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: Для данного объекта не определено беспараметрических конструкторов.
Ошибка источника: Необработанное исключение при выполнении текущего веб-запроса. Информацию о происхождении и месте возникновения исключения можно получить, используя следующую трассировку стека исключений.`
В общем, я не знаю, зачем вам именно это решение и почему вы считваете весь входящий поток как строку, а не как 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 вы можете узнать тут или тут
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Пытаюсь передать массив Int из C# в C++Выскакивает ошибка:
Не получается решить проблемуУ меня есть TextBlock, который показывает имя файла и расширение
Интересует вопрос формирования отчета в ExcelИмеется база данных