我需要“ WinForm”应用程序来进行通信。
“ Webhook”计划从viber接收数据(事件),然后该数据将在应用程序“ WinForm”中使用。
我做到了:
http://localhost:44836/Hook
; 如果我正确理解了理论,则在执行"Postman" action. I click "SEND"
之后,应在ViberProcess (HttpContext context)
控制器中执行HookController.cs
方法,并且代码应在breakpoint
处停止。
这没有发生。
文档Viber REST API
-link
问题。
如何制作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)
{
// .....
}
}
}
}
8. The result, see the picture "- = RESULT = -";
Server error in application '/'.
Could not find this resource.
Description: HTTP 404. The resource (or one of its dependencies) may have been deleted, received a different name, or may be temporarily unavailable. Review the following URL and verify that it is correct.
Requested URL: / Hook
Version Information: Microsoft .NET Framework Version 4.0.30319; ASP.NET version: 4.7.3062.0
更新_1
我使用链接http://localhost:44836/api/Hook
代码不止于breakpoint
。
结果:
{
"Message": "Could not find the HTTP resource corresponding to the request URI \" http://localhost:44836/api/Hook\ ".",
"MessageDetail": "Could not find the type corresponding to the controller \" Hook \ " . "
}
我使用链接http://localhost:44836/Hook/ViberProcess
代码不止于breakpoint
。
结果
Server error in application '/'.
For this object, no parameterless constructors are defined.
Description: An unhandled exception occurred during the execution of the current web request.
Examine the stack trace for more information about this error and the code snippet that caused it.
Exception Details: System.MissingMethodException: No parameter-less constructors are defined for this object.
Source Error:
An unhandled exception occurred during the execution of the current web request.
Information on the origin and location of the exception can be obtained using the following exception stack trace.
答案 0 :(得分:8)
只需在您的HttpContext context
操作中删除ViberProcess
。
因此,方法将变为
public IActionResult ViberProcess()
{
Stream s = HttpContext.Current.Request.InputStream;
//... continue your code from here.
}
其背后的原因是,您提到HttpContext context
作为ViberProcess
的参数,但是在发送请求时,它将使用精确模式进行搜索。
因此,在您的请求中,您无法从任何地方传递HttpContext
。因此,将永远找不到此请求。
尝试一下,让我知道您是否还有问题。