Как инициализировать приемник webhook в ASP.Net MVC
Я следую этому руководству здесь для установки и использования webhooks в ASP.Net MVC, но похоже, что это руководство предназначено для проекта типа wep api. Я использую проект типа MVC, и нет метода Register, в отличие от проекта API. В MVC у нас есть метод RegisterRoutes. Так как мне зарегистрировать мои веб-хуки в MVC?
проект API, который использует Register и config, мой сайт ASP.Net MVC не имеет этого.
MVC использует RegisterRoutes
ОБНОВЛЕНИЕ Здесь я добавил контроллер веб-API, и код, который я разместил ниже, находится в контроллере веб-API. Я включил пакеты nuget для веб-хуков, регистрации в global.asax.cs и в методе register. Но у меня все еще есть проблемы с достижением кода "ExecuteAsync", ни одна точка останова не была достигнута
public class StripeWebHookHandler : WebHookHandler
{
// ngrok http -host-header="localhost:[port]" [port]
// http(s)://<yourhost>/api/webhooks/incoming/stripe/ strip receiver
public StripeWebHookHandler()
{
this.Receiver = StripeWebHookReceiver.ReceiverName;
}
public override Task ExecuteAsync(string generator, WebHookHandlerContext context)
{
// For more information about Stripe WebHook payloads, please see
// 'https://stripe.com/docs/webhooks'
StripeEvent entry = context.GetDataOrDefault<StripeEvent>();
// We can trace to see what is going on.
Trace.WriteLine(entry.ToString());
// Switch over the event types if you want to
switch (entry.EventType)
{
default:
// Information can be returned in a plain text response
context.Response = context.Request.CreateResponse();
context.Response.Content = new StringContent(string.Format("Hello {0} event!", entry.EventType));
break;
}
return Task.FromResult(true);
}
}
1 ответ
Вы можете смешивать контроллеры веб-API в своем проекте MVC. Когда вы добавите контроллеры веб-API, у вас будет WebApiConfig.cs
файл в вашем App_Start, где вы будете определять маршрутизацию для веб-API. Вот где вы можете позвонить InitializeReceiveStripeWebHooks
метод после добавления необходимых пакетов nuget в ваш проект.
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// Load receivers
config.InitializeReceiveStripeWebHooks();
}
}
Когда вы создаете новый проект, Visual Studio представляет вам различные шаблоны проектов. Вы можете выбрать WebApi, который включает поддержку MVC и Web Api. Но если ваш проект создан с использованием шаблона MVC, он не будет иметь поддержку веб-API по умолчанию. В этом случае вы можете добавить его вручную, выполнив следующие действия.
Шаг 1
Создайте новый класс с именем WebApiConfig.cs
в папке App_Start. Содержание ниже в этом классе
using System.Web.Http;
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
Шаг 2
Теперь перейдите на global.asax и обновите Application_Start
событие, чтобы включить звонок в Register
метод в нашем недавно созданном WebApiConfig
учебный класс.
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register); // This is the new line
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
Теперь вы можете щелкнуть правой кнопкой мыши на проекте и добавить новые классы WebApiController, и веб-API должны работать.