私はWeb APIプロジェクトで少しリファクタリングを行っています。そして、私は、すべての必要な属性を持つ抽象クラスのコントローラーの1つを抽出するのがよいと気づきました次のとおりです。抽象的なコントローラーメソッドは認識されません
は私の既存のコントローラのうち、抽象クラスとメソッドを抽出:
[RoutePrefix("api/auth")] public class AdminController : BaseAdminController
のでBaseAdminController
は次のようになります。
public abstract class BaseAdminController : BaseApiController
{
[HttpGet]
[Route("validatetoken")]
public abstract IHttpActionResult ValidateToken(string token);
}
これは私が使用するルーティングです:
をなしタイプがコントローラに一致する発見されなかった。
public static void Register(HttpConfiguration config) { // Web API configuration and services // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/" ); }
は、今私はそれが与える抽象コントローラでコードをテストするときはスローことに気づきました'auth'という名前の
抽象クラスとメソッドの作業うーん。
私はこのURLでテストしてい:
http://localhost:60747/api/auth/validatetoken?auth_token=117a2686-dad3-4b1e-a5eb-94aebed45d06
私の 'RoutePrefix'属性は具体的なクラスに置かれていますが、私は' Microsoft.AspNet.WebApi.Core.5.2.3 \ lib \ net45 \ System.Web.Httpを逆コンパイルしたものです.dll'(私のプロジェクトがこの属性に使用しているアセンブリです)、RouteAttributeに 'Inherited = true'とマークされています。私はmsdnが反対を示していることにちょっと驚きました。 – kuskmen
この回答は間違っています。リンクされた複製を再検討する。 – Nkosi