MVCとWeb Apiの両方のASP.NETアプリケーションを作成しようとしています。デフォルトコントローラ(HomeController)は、HTMLとjQueryで構成されるビューを返します。私は同じプロジェクトの一部であるAPIを呼び出すためにjQueryを使いたいと思います。MVC/WebApiコンボプロジェクトで属性ルーティングが失敗する
APIのセットアップがあり、Postmanでテストしていますが、APIのエンドポイントに到達しようとすると次のエラーが発生します。
{
"Message": "No HTTP resource was found that matches the request URI 'http://localhost:19925/api/encryption/encrypt'.",
"MessageDetail": "No action was found on the controller 'Values' that matches the request."
}
私はので、私は私が間違っているつもりですどこつまりかなり確信しているルーティング属性を使用しようとしています。
[RoutePrefix("api/encryption")]
public class ValuesController : ApiController
{
[HttpPost]
[Route("encrypt")]
public IHttpActionResult EncryptText(string plainText, string keyPassPhrase)
{
// Method details here
return Ok(cipherText);
}
}
私はapi/encryption
に設定されたルートプレフィックスを持っています。私はまた道encrypt
を使用してHttpPost
としてマークされた方法を持っています。以下は私のWebApiConfigですが、属性ルーティング用に適切に設定されていると思います。私の理解の方法に到達する必要があり、次のURLにPOST
ことで
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
// Default MVC routing
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
..
http://localhost:19925/api/encryption/encrypt
をまだそうではありません。私は2つの文字列値をPostman経由でメソッドにポストします。私はスクリーンキャプチャを付けました(そして、はい、keyPassPhraseは偽です)。ここで
限り、私のように...要求...
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
注意する...私はポストマンにGETからPOSTに変更したときに、それが動作することをもうひとつとしてGlobal.asaxのですクエリ文字列に沿ってパラメータを送信しています。私が体内のパラメータを送信すると、元のエラーが出ます。
あなたが使用している '[Route]'と '[HttpPost']属性の完全な名前空間は何ですか? – haim770
名前空間は '名前空間EncryptionDemo.Controllers'です。 ValuesControllerは、ASP.NETプロジェクトによって生成されるデフォルトのコントローラです。インデックスメソッドを削除して自分自身を追加しました。 – webworm
私は '[Route]'と '[HttpPost]'属性の完全な名前空間について尋ねました。コントローラーではありません... – haim770