1. ホーム
  2. c#

[解決済み] WebAPI 2 の DefaultInlineConstraintResolver エラー

2022-04-27 11:45:50

質問

Web API 2 を使用していますが、ローカルマシンの IIS 7.5 を使用して API メソッドに POST を送信すると、次のエラーが表示されます。

The inline constraint resolver of type 'DefaultInlineConstraintResolver' was unable to resolve the following inline constraint: 'string'.

Line 21: GlobalConfiguration.Configuration.EnsureInitialized();

IISを使用して、私のAPIはどれも動作しません。しかし、Visual StudioでIIS Expressを使用してAPIプロジェクトを実行し、ログインAPIへのPOSTには成功しましたが、別のAPI呼び出しにGETリクエストを行おうとすると、制約リゾルバーエラーが発生しました。

この問題を解決するために、私は Visual Studio でまったく新しい Web API 2 プロジェクトを作成し、既存の API を 1 つずつ新しいプロジェクトにインポートして、それらを実行して動作することを確認し始めました。この新しいプロジェクトでIIS Expressを使用すると、既存のAPIプロジェクトで行ったのとまったく同じ結果が得られます。

何が足りないのでしょうか?新しいプロジェクトでも、この制約リゾルバの問題にぶつかることなくGETリクエストを行うことができません。

解決方法は?

このエラーは、Routeのどこかで、以下のような指定をしていたことを意味します。

[Route("SomeRoute/{someparameter:string}")]

quot;string"は、他に何も指定されなければ想定される型なので必要ありません。

エラーが示すように DefaultInlineConstraintResolver というインライン制約がないため、Web API が出荷されています。 string . デフォルトでサポートされているものは以下の通りです。

// Type-specific constraints
{ "bool", typeof(BoolRouteConstraint) },
{ "datetime", typeof(DateTimeRouteConstraint) },
{ "decimal", typeof(DecimalRouteConstraint) },
{ "double", typeof(DoubleRouteConstraint) },
{ "float", typeof(FloatRouteConstraint) },
{ "guid", typeof(GuidRouteConstraint) },
{ "int", typeof(IntRouteConstraint) },
{ "long", typeof(LongRouteConstraint) },

// Length constraints
{ "minlength", typeof(MinLengthRouteConstraint) },
{ "maxlength", typeof(MaxLengthRouteConstraint) },
{ "length", typeof(LengthRouteConstraint) },

// Min/Max value constraints
{ "min", typeof(MinRouteConstraint) },
{ "max", typeof(MaxRouteConstraint) },
{ "range", typeof(RangeRouteConstraint) },

// Regex-based constraints
{ "alpha", typeof(AlphaRouteConstraint) },
{ "regex", typeof(RegexRouteConstraint) }