Здравствуй. Хорошо, я сделал все это и добавил новый класс в контроллер веб-API для тестирования. Я обновлю код сейчас. Но я до сих пор не могу достичь каких-либо точек останова внутри кода. И я вижу только тайм-аут сообщения об ошибках в моей панели Stripe. Я вижу запросы httppost, поступающие через ngrok (localhost: 4040) и на экране консоли, где запущен ngrok, но ничто не стремится войти в реальный метод ExecuteAsync в классе WEB Api

дую этому руководствуВот для установки и использования 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);
    }
}
 Shyju26 окт. 2017 г., 02:25
Идем дальше, не размещайте изображения, публикуйте код в вопросе.
 coder77115 окт. 2018 г., 16:45
привет ты заставил это работать?

Ответы на вопрос(1)

добавите контроллеры веб-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 должны работать.

 user118605026 окт. 2017 г., 02:38
хорошо, дай мне минутку, чтобы попробовать
 Shyju26 окт. 2017 г., 02:31
Добавление подробного ответа на это в течение нескольких минут.
 Shyju26 окт. 2017 г., 02:37
@ user1186050 VS не делает этого. Таким образом, вы должны сделать это вручную. Просто следуйте двум шагам из ответа.
 user118605026 окт. 2017 г., 02:58
Здравствуй. Хорошо, я сделал все это и добавил новый класс в контроллер веб-API для тестирования. Я обновлю код сейчас. Но я до сих пор не могу достичь каких-либо точек останова внутри кода. И я вижу только тайм-аут сообщения об ошибках в моей панели Stripe. Я вижу запросы httppost, поступающие через ngrok (localhost: 4040) и на экране консоли, где запущен ngrok, но ничто не стремится войти в реальный метод ExecuteAsync в классе WEB Api
 user118605026 окт. 2017 г., 02:31
Я добавил контроллер web api в свой проект MVC, но он не добавил файл webapiconfig.cs в мою папку App_Start !!

Ваш ответ на вопрос