C#
 Computer >> コンピューター >  >> プログラミング >> C#

依存関係として追加された登録サービスのサービス存続期間を指定するにはどうすればよいですか?C#Asp.net Core?


組み込みのIoCコンテナは、登録されたサービスタイプの存続期間を管理します。指定された有効期間に基づいてサービスインスタンスを自動的に破棄します。

組み込みのIoCコンテナは、3種類のライフタイムをサポートします-

シングルトン − IoCコンテナは、アプリケーションの存続期間を通じてサービスの単一インスタンスを作成して共有します。

一時的 − IoCコンテナは、要求するたびに、指定されたサービスタイプの新しいインスタンスを作成します。

スコープ − IoCコンテナは、指定されたサービスタイプのインスタンスをリクエストごとに1回作成し、1つのリクエストで共有されます。

public interface ILog{
   void info(string str);
}
class MyConsoleLogger : ILog{
   public void info(string str){
      Console.WriteLine(str);
   }
}
public class Startup{
   public void ConfigureServices(IServiceCollection services){
      services.Add(new ServiceDescriptor(typeof(ILog), new
      MyConsoleLogger())); // singleton
      services.Add(new ServiceDescriptor(typeof(ILog),
      typeof(MyConsoleLogger), ServiceLifetime.Transient)); // Transient
      services.Add(new ServiceDescriptor(typeof(ILog),
      typeof(MyConsoleLogger), ServiceLifetime.Scoped)); // Scoped
   }
}

次の例は、extensionmethodsを使用してタイプ(サービス)を登録する方法を示しています。

public class Startup{
   public void ConfigureServices(IServiceCollection services){
      services.AddSingleton<ILog, MyConsoleLogger>();
      services.AddSingleton(typeof(ILog), typeof(MyConsoleLogger));
      services.AddTransient<ILog, MyConsoleLogger>();
      services.AddTransient(typeof(ILog), typeof(MyConsoleLogger));
      services.AddScoped<ILog, MyConsoleLogger>();
      services.AddScoped(typeof(ILog), typeof(MyConsoleLogger));
   }
}

  1. C#ASP.NET WebAPIでアクションメソッドにエイリアス名を割り当てるにはどうすればよいですか?

    コントローラのパブリックメソッドは、アクションメソッドと呼ばれます。 DemoControllerクラスがApiControllerから派生し、名前がGet、Post、PutandDeleteなどのHTTP動詞と一致する複数のアクションメソッドを含む例を考えてみましょう。 例 public class DemoController : ApiController{    public IHttpActionResult Get(){       //Some Operation       return Ok();

  2. C#ASP.NET WebAPIでCORSの問題を解決するにはどうすればよいですか?

    クロスオリジンリソースシェアリング (CORS)は、追加のHTTPヘッダーを使用して、あるオリジンで実行されているWebアプリケーションに、別のオリジンから選択されたリソースへのアクセスを許可するようにブラウザーに指示するメカニズムです。 Webアプリケーションは、自身とは異なるオリジン(ドメイン、プロトコル、またはポート)を持つリソースを要求すると、クロスオリジンHTTPリクエストを実行します。 たとえば、フロントエンド(UI)とバックエンド(サービス)を持つアプリケーションについて考えてみましょう。フロントエンドがhttps://demodomain-ui.comから提供されているとしま