2017-10-25 6 views
0

このガイドは、ASP.Net MVCでwebhooksをインストールして使用するためのガイドですhereですが、このガイドはwep apiタイプのプロジェクトのようです。私はMVC型のプロジェクトを使用しており、APIプロジェクトとは異なり、Registerメソッドはありません。 MVCにはRegisterRoutesメソッドがあります。 MVCにWebhookを登録するにはどうしたらいいですか?ASP.Net MVCでウェブフックレシーバを初期化するには

私のASP.Net MVCサイトにはRegisterとconfigを使用するAPIプロジェクトがありません。

enter image description here

MVCはRegisterRoutesここ

enter image description here

更新履歴 を使用しています私は、Web APIコントローラを追加し、私は下の投稿のコードでは、いただきましウェブAPIコントローラです。 webhooks用のnugetパッケージ、global.asax.csとregisterメソッドの登録が含まれていました。しかし、私はまだコード「ExecuteAsync」はブレークポイントがあなたのMVCプロジェクトのWeb APIコントローラーを混在させることができ

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); 
    } 
} 
+0

さらに、画像を投稿したり、質問にコードを投稿したりしないでください。 – Shyju

答えて

1

を打っていないされているに達する問題を抱えています。 Web APIコントローラーを追加すると、App_StartにWebApiConfig.csというファイルがあり、Webアプリケーションのルーティングを定義します。それはあなたのプロジェクトに必要なナゲットパッケージを追加した後にInitializeReceiveStripeWebHooksメソッドと呼ぶことができます。

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はさまざまなプロジェクトテンプレートを提示します。 MVCとWeb APIのサポートを含むWebApiを選択できます。しかし、プロジェクトがMVCテンプレートを使用して作成されている場合、デフォルトでWeb APIのサポートはありません。その場合は、次の手順に従って手動で追加できます。

ステップ#1

App_StartフォルダにWebApiConfig.csと呼ばれる新しいクラスを作成します。

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

今すぐ新しく作成したWebApiConfigクラスでRegisterメソッドへの呼び出しを含めるようにApplication_StartイベントをGlobal.asaxのと更新して行く、そのクラスに以下の内容を持っています。

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クラスを追加すると、Web APIがすぐに動作するようになりました。

+0

MVCプロジェクトにWeb APIコントローラを追加しましたが、webapiconfig.csファイルをApp_Startフォルダに追加しませんでした。 – user1186050

+0

詳細な応答を数分で追加します。 – Shyju

+0

@ user1186050 VSはそれをしません。したがって、手動で行う必要があります。答えの2つのステップに従ってください。 – Shyju

関連する問題