ASP.NETコア-構成ファイルがPOCOにマップされていません

user3656237

似たような質問をたくさん読んだのですが、何もうまくいきませんでした。私はおそらく何か間違ったことをしているのですが、何がわかりません。

以下は、ErrorCodes.jsonプロジェクトのルート(と同じレベルappsettings.jsonで呼び出された、私が作成した構成ファイルです

{
  "ErrorMap": {
    "Type": {
      "Input": {
        "Null": {
          "Code": "ABC-1000",
          "Message": "The request body is null or empty"
        },
        "Name": {
          "Code": "ABC-1001",
          "Message": "The 'name' property was not set"
        },
        "Age": {
          "Code": "ABC-1002",
          "Message": "The 'age' property was not set"
        },
        "Email": {
          "Code": "ABC-1003",
          "Message": "The 'email' property was not set"
        }
      }
    }
  }
}

ではstartup.csI次のコンストラクタを持っています。

public Startup()
{
    var builder = new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddJsonFile("ErrorCodes.json", optional: false, reloadOnChange: false)
        .AddJsonFile("appsettings.json", optional: false, reloadOnChange: false);

    this.configuration = builder.Build();
}

そして私のConfigureServices方法はここにあります:

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<ErrorMap>(configuration.GetSection(nameof(ErrorMap)));
    services.AddSingleton(
        context => context.GetRequiredService<IOptions<ErrorMap>>().Value);
    )
    services.AddSingleton<ErrorCodeConfig>();
    // some other stuff
}

ErrorCodeConfigは、に依存する「bean」(C#の世界での名前はわかりません)でありErrorMap、次のように定義されています。

public class ErrorCodeConfig
{
    private readonly ErrorMap _errors;

    public ErrorCodeConfig(ErrorMap errors)
    {
        _errors = errors;
    }

    public Error Get(string typeKey, string errorKey)
    {
        return _errors.Get(typeKey, errorKey);
    }
}

クラスErrorMapErrorは次のように定義されます。

public class ErrorMap
{
    public Dictionary<string, Dictionary<string, Error>> Type;

    public Error Get(string key, string key2)
    {
        return Type.GetValueOrDefault(key).GetValueOrDefault(key2);
    }
}

public class Error
{
    public string Code { get; set; }
    public string Message { get; set; }
}

アプリケーションを実行できます。クラスDictionaryを除いて、すべてが適切に挿入されますErrorMapそれは残ってnullおり、理由はわかりません。

これが私がこれまでに試したことです:

  • で間違った名前を使用してConfigurationBuilder読み取りの問題かどうかを確認したため、一時的にファイルの名前を変更しましたが、ファイルが見つからなかったため、例外がスローされました。したがって、少なくともファイルを見つけることができると思います。
  • appsettings.jsonにErrorMapブロックを追加して、デフォルトの構成ファイルを挿入できるかどうかを確認しましたが、うまくいきませんでした。クラッシュしませんでしたが、configクラスにはまだデータが入力されていませんでした。

私のプロジェクトで私が間違ったことについて何か考えがありますか?読んでくれてありがとう

咆哮S。

私のコンピューターでテスト済み

var errorMap = new ErrorMap();
Configuration.GetSection(nameof(ErrorMap)).Bind(errorMap);

このバージョンのErrorMapで

public class ErrorMap
{
    public Dictionary<string, Dictionary<string, Error>> Type { get; set; }

    public Error Get(string key, string key2)
    {
        return Type.GetValueOrDefault(key).GetValueOrDefault(key2);
    }
}

ここに画像の説明を入力してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ASP.NETコアInvalidOperationException: 'このDbContext用にデータベースプロバイダーが構成されていません。/

分類Dev

asp.net C#の編集モードで「ファイルが選択されていません」の代わりにファイルアップロードコントロールですでに保存されているファイルを取得するにはどうすればよいですか?

分類Dev

ASP.netリソースファイルがbinにコピーされていません

分類Dev

Asp.netコア2-ファイルは公開されていません

分類Dev

LessJsファイルがASP.NETで処理されていません

分類Dev

LessJsファイルがASP.NETで処理されていません

分類Dev

Javascriptファイルがaspxにロードされていませんか?ASP.NET C#

分類Dev

自己完結型のASP.Netコアがappsettings.jsonファイルを読み取っていません

分類Dev

asp.netコアIFilterProviderフィルター属性が実行されていません

分類Dev

Asp.netコアには公開に関するファイルが含まれています

分類Dev

dotnetpublishコマンドがasp.netコアWebアプリケーションプロジェクトのzipファイルパッケージを作成していません

分類Dev

ASP.NET-Coreアプリで、「ファイル領域のロック/ロック解除はこのプラットフォームではサポートされていません」というエラーメッセージが表示されるのはなぜですか。MacOSにデプロイすると?

分類Dev

ASP.NETコア:IConfigurationBuilderにAddAzureKeyVaultの定義が含まれていません

分類Dev

ExtJSファイルをASP.netMVCステータスにアップロードしますが、コンテンツは送信されません

分類Dev

zipファイルがasp.netを使用してダウンロードされていません

分類Dev

asp.netコアの剣道構成

分類Dev

ASP.NETコアモデルがAJAX経由でコントローラーにバインドされていません

分類Dev

エラー500:ASP.NETコアとAngularがcssファイルを見つけられません

分類Dev

ASP.Net Core2のSerilogJsonFormatterがappsettingsファイルから適用されていません

分類Dev

GetOwinContextがasp.netコアで機能していません

分類Dev

ASP.NetコアCookieRequestCultureProviderが機能していません

分類Dev

asp.netコアファイルのアップロードは常にnull

分類Dev

asp.netコアにファイルをアップロードする

分類Dev

構成値 `IHostBuilder`を設定しようとしていますが、スタートアップクラスのConfigureServicesには反映されていません-asp.net core 3.1

分類Dev

SPAファイルのasp.netコアにHTTPヘッダーを設定できません

分類Dev

ASP.NET Core Dockerfileのデフォルトテンプレート: "COPY * .sln。/"ソースファイルが指定されていません

分類Dev

ASP.NETコアハンドルメソッドは許可されていません405

分類Dev

アップグレードを可能にするAsp.Netコアマジックファイル

分類Dev

ASP.NET Core2.2コントローラーへのPostmanフォームデータがプライベートセッターでコマンドにバインドされていません

Related 関連記事

  1. 1

    ASP.NETコアInvalidOperationException: 'このDbContext用にデータベースプロバイダーが構成されていません。/

  2. 2

    asp.net C#の編集モードで「ファイルが選択されていません」の代わりにファイルアップロードコントロールですでに保存されているファイルを取得するにはどうすればよいですか?

  3. 3

    ASP.netリソースファイルがbinにコピーされていません

  4. 4

    Asp.netコア2-ファイルは公開されていません

  5. 5

    LessJsファイルがASP.NETで処理されていません

  6. 6

    LessJsファイルがASP.NETで処理されていません

  7. 7

    Javascriptファイルがaspxにロードされていませんか?ASP.NET C#

  8. 8

    自己完結型のASP.Netコアがappsettings.jsonファイルを読み取っていません

  9. 9

    asp.netコアIFilterProviderフィルター属性が実行されていません

  10. 10

    Asp.netコアには公開に関するファイルが含まれています

  11. 11

    dotnetpublishコマンドがasp.netコアWebアプリケーションプロジェクトのzipファイルパッケージを作成していません

  12. 12

    ASP.NET-Coreアプリで、「ファイル領域のロック/ロック解除はこのプラットフォームではサポートされていません」というエラーメッセージが表示されるのはなぜですか。MacOSにデプロイすると?

  13. 13

    ASP.NETコア:IConfigurationBuilderにAddAzureKeyVaultの定義が含まれていません

  14. 14

    ExtJSファイルをASP.netMVCステータスにアップロードしますが、コンテンツは送信されません

  15. 15

    zipファイルがasp.netを使用してダウンロードされていません

  16. 16

    asp.netコアの剣道構成

  17. 17

    ASP.NETコアモデルがAJAX経由でコントローラーにバインドされていません

  18. 18

    エラー500:ASP.NETコアとAngularがcssファイルを見つけられません

  19. 19

    ASP.Net Core2のSerilogJsonFormatterがappsettingsファイルから適用されていません

  20. 20

    GetOwinContextがasp.netコアで機能していません

  21. 21

    ASP.NetコアCookieRequestCultureProviderが機能していません

  22. 22

    asp.netコアファイルのアップロードは常にnull

  23. 23

    asp.netコアにファイルをアップロードする

  24. 24

    構成値 `IHostBuilder`を設定しようとしていますが、スタートアップクラスのConfigureServicesには反映されていません-asp.net core 3.1

  25. 25

    SPAファイルのasp.netコアにHTTPヘッダーを設定できません

  26. 26

    ASP.NET Core Dockerfileのデフォルトテンプレート: "COPY * .sln。/"ソースファイルが指定されていません

  27. 27

    ASP.NETコアハンドルメソッドは許可されていません405

  28. 28

    アップグレードを可能にするAsp.Netコアマジックファイル

  29. 29

    ASP.NET Core2.2コントローラーへのPostmanフォームデータがプライベートセッターでコマンドにバインドされていません

ホットタグ

アーカイブ