MVC4 WebApi コントローラーと Dispose パターンに関連する問題を発見したと思います。問題はポスト アクション メソッドにあり、応答は例外の説明です。
Multiple actions were found that match the request:
Void Post(System.String) on type MVC4Api.Controllers.ValuesController
Void Dispose() on type MVC4Api.Controllers.ValuesController
Dispose パターンは、この記事から提供されています。問題を以下の定型コードだけに減らしました。なお、この問題は Get メソッドでは発生せず、Post メソッドでのみ確認済みです。パスに投稿して試してみてください/api/values
。
public class ValuesController : ApiController
{
public void Post([FromBody]string value)
{
}
private bool _disposed;
protected override void Dispose(bool disposing)
{
if (_disposed)
{
return;
}
_disposed = true;
base.Dispose(disposing);
if (disposing)
{
// dispose of dependencies
}
}
public new void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
}
私の質問は、Post メソッドを呼び出すにはどうすればよいですか? そして、この問題の原因は何ですか?
編集: エラーはルーティングに関するものであるため、ルーティングを制御する WebApiConfig の下に追加しました。これは、起動時に Global.asax に通常どおり読み込まれ、新しい WebApi プロジェクトを開始してから変更されていません。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}