これはなぜ機能しませんか?私はエラーが発生します:System.InvalidOperationException:URLに一致する複数のコントローラタイプが見つかりました。これは、複数のコントローラの属性ルートが要求されたURLと一致する場合に発生します。複数のコントローラタイプがc#web api 2.0でエラーが見つかりました
public class ConfigUpdateController: ApiController
{
[HttpPut]
[Route("api/device/{serial}/config")]
public IHttpActionResult Update(
[FromUri] string serial,
[FromBody] Configuration configuration)
{
}
}
public class ConfigQueryController: ApiController
{
[HttpGet]
[Route("api/device/{serial}/config")]
public IHttpActionResult Get(
[FromUri] string serial)
{
}
}
別のコントローラで同じリソースのメソッドを使用する理由は、コマンドをコマンドから切り離すためです。
EDIT
正直に言うと、それはそうコメントコントローラは電気ショック療法命名気にしないでください、私の問題を説明するために十分なコードです。私の質問の文脈では重要ではありません。だから、コントローラが解決し、法動詞(PUT、GETすることができないので、これは動作しません
Routing has three main phases: Matching the URI to a route template. Selecting a controller. Selecting an action.
ようだ:私はweb-api overview thetルーティングが3つの段階があり、ここで見つけた
EDIT 2
)もチェックされていない? O_o
方法が問題を引き起こしている同じシグネチャと同一の経路を有します。メソッドのシグネチャまたはルートを変更します。また、コントローラの適切な名前付けを使用することに害を及ぼすこともありません。 – hbulens
あなたのルートがコントローラ – brykneval
に基づいていないASP.NET MVCでは、同じ名前の2つのアクションを持つことができますが、同じシグネチャではできません。この回答をご覧くださいhttp://stackoverflow.com/questions/9552761/同一のアクション名を持つコントローラの取得とポストメソッド – user65439