自己ホストWebAPIサーバを作成しようとしています。すべてのルートを1つのコントローラに移動したい。このコントローラーは、URLのコントローラー部分を取り出し、これを使用して適切な応答を決定することができます。WebApiハードコーディングコントローラルーティング
_configuration.Routes.MapHttpRoute
(
name: "DefaultApi",
routeTemplate: string.Concat("api/Home", "/{id}"),
defaults: new { id = RouteParameter.Optional, controllerName="Home" }
);
私のコントローラクラスは "にHomeController" と呼ばれている:
は、私は次のルート構成を有しています。私はそれにすべてのURLをリダイレクトしようとしています。
ここにHomeControllerのコードを示します。今のところ私は外部ロジック(リモートコントローラ)への呼び出しをコメントアウトしました。 Getアクションで文字列を返すだけです。
public class HomeController : ApiController
{
private IExternalController<string> remoteController;
public HomeController()
{
remoteController = GlobalKernelConfiguration.GetStandardKernel().Get<IExternalController<string>>();
}
public string Get()
{
return "HELLO FROM INTERNAL"; //remoteController.Get();
}
public string Get(int id)
{
return remoteController.Get(id);
}
public void Delete(int id)
{
remoteController.Delete(id);
}
public void Post(string value)
{
remoteController.Post(value);
}
public void Put(int id, string value)
{
remoteController.Put(id, value);
}
}
私は、ホームコントローラにルーティングするhttp://localhost:9000/api/[AnythingHere]を期待するだろうが、次のURLをしようとしたとき、私は次のエラーを取得する:http://localhost:9000/api/Home
{「メッセージ」: "いいえHTTPリソースが要求URIに一致することが判明しました'http://loca lhost:9000/API /ホーム' "" MessageDetail。 ":" コントローラ名を提供しませルートが なかったリクエストURI 'http://localhost:9000/api/Home' と一致することが分かっ "}
だから、これはどうしますか? – CodeCaster
@CodeCaster私はコンソールアプリケーションからヘッダー情報を印刷したところ、エラーが見つかりました。私はそれを質問に付けました。 –
あなたの 'HomeController'は' ApiController'ですか? – CodeCaster