private void Form1_Load(object sender, EventArgs e)
{
StartHttpServer();
}
static void StartHttpServer()
{
try
{
// var route_config = new List<Models.Route>()
var route_config = new List<Route>()
{
new Route
{
Name = "Привет обработчик (Hello Handler)",
UrlRegex = @"^/$",
Method = "GET",
Callable = (HttpRequest request) =>
{
return new HttpResponse()
{
ContentAsUTF8 = "Привет от простого сервера Http (Hello from SimpleHttpServer)",
ReasonPhrase = "OK",
StatusCode = "200"
};
}
},
//new Route {
// Name = "FileSystem Static Handler",
// UrlRegex = @"^/Static/(.*)$",
// Method = "GET",
// Callable = new FileSystemRouteHandler() { BasePath = @"C:\Tmp", ShowDirectories=true }.Handle,
//},
};
HttpServer httpServer = new HttpServer(8080, route_config);
Thread thread = new Thread(new ThreadStart(httpServer.Listen));
thread.Start();
}
catch (Exception ex)
{
string s = ex.Message;
string t = ex.StackTrace;
// throw;
MessageBox.Show(s + " \r\n "
+ t);
}
}
Я конечно не знаю, где регистрируется это webhook, но если на удаленном Viber сервере ...
то он не сможет отправить вам запрос на локальный компьютер, если у вас нет выделенного IP. ...
Если web server не находиться внутри вашего WinForm приложения ...
using System.Web.Mvc;
using System.Web.Routing;
namespace WebAppl1
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
}
[HttpPost]
public void Index()
// public void Index(HttpContext context)
// public ActionResult Index(HttpContext context)
// public ActionResult Index()
{
try
{
// HttpContext context = new HttpContext();
// 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();
// return View();
// Other code that converts json text to classes
}
catch (Exception e)
{
// .....
}
}
А чтобы п.3. выполнялся автоматически, можно сделать ?
В `Globals` тоже событие делать или можно как-то получше сделать решение для автоматической передачи данных из `Globals` в класс `Form1`?