2017-05-22 23 views
0

.NET C#WebAPIプログラムがあり、メインアプリケーションを終了する直前に処理する必要がある外部ライブラリを使用しています。.NET C#WebAPIプログラムでライブラリを初期化する方法

startup機能だ:私はちょうどMyLib.DeInit();をコールする必要がありますので

public class Startup 
{ 
     private static void WebApiSetup(IAppBuilder app) 
     { 
      using (var configuration = new HttpConfiguration()) 
      { 
       app.UseWebApi(configuration); 
      } 
     } 
} 

外部ライブラリは、静的なクラスです。残念ながら、私はその関数を呼び出す適切な場所が表示されません、カスタマイズする "ここで私たちは終了"機能はありません。誰かが「キャンセルトークン」へのコールバックを登録について話しているが、私は何をするのか分からない、それ

+0

https://stackoverflow.com/questions/23317965/in-self-hosted-owin-web-api-how-to-run-code-at-shutdown – spender

+0

@spender \t 私はIAppBuilderで利用できるapp.Propertiesを持っていません –

答えて

1
あなたはこのような「シャットダウン」でコードを実行することができ

public class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     var context = new OwinContext(app.Properties); 
     var token = context.Get<CancellationToken>("host.OnAppDisposing"); 
     if (token != CancellationToken.None) 
     { 
      token.Register(() => 
      { 
       // code to run at shutdown 
      }); 
     } 
    } 
} 

プロパティの一部でありますIAppBuilderのベースOwinインターフェース:

// Decompiled with JetBrains decompiler 
// Type: Owin.IAppBuilder 
// Assembly: Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0ebd12fd5e55cc5 
// MVID: C152461C-65C1-4F51-912C-2454A21D9BAD 
// Assembly location: E:\Felinesoft\BACP\DEV\WEB\BACP.Web-AzureSearch\BACP.Web.Presentation\Bin\Owin.dll 

using System; 
using System.Collections.Generic; 

namespace Owin 
{ 
    public interface IAppBuilder 
    { 
    IDictionary<string, object> Properties { get; } 

    IAppBuilder Use(object middleware, params object[] args); 

    object Build(Type returnType); 

    IAppBuilder New(); 
    } 
} 
+0

私はIAppBuilderで利用できるapp.Propertiesを持っていません –

+0

Owinを使用しています、正しいですか? –

+0

はい、私は.Propertiesフィールドを持っていないのですか? –

関連する問題