Web APIを使用してmvcプロジェクトにWebサービスを追加しようとしています。 プロジェクトの作成時に、私はMvc + Web Apiを選択しました。Web APIを使用したMvc - コントローラーと一致するタイプが見つからない
しかし、私はAPIコントローラにアクセスすることはできません、私はこのエラーを取得しておいてください。
<Error>
<Message>
No HTTP resource was found that matches the request URI 'http://www.myapp.app/api/sms'.
</Message>
<MessageDetail>
No type was found that matches the controller named 'sms'.
</MessageDetail>
</Error>
マイglobal.asax
:
マイRouteConfig.cs
:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
マイWebApiConfig.cs
:
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
私のAPIコントローラ:
public class SmsController : ApiController
{
private DbContext db = new DbContext();
// GET: api/Sms
public IQueryable<Sms> GetSms()
{
return db.Sms;
}
...
}
当然のことながら、私はhttp://www.myapp.app/api/sms
経由でAPIにアクセスしようとしています。
私は文字通り私が考えることができるすべてを試し、SOや他のフォーラムに関するすべての関連する質問について読んだが、何も役に立たなかった。 私はそれが通常のlocalhost:port
ではない私のアプリケーションのURL、に関係しているかなり確信して、私はwww.myapp.app
にそれを変更し、それがそのためのポートで80
を実行し、私は見てIISバインドを変更する必要がありました*:80:www.myapp.app
のように、このエントリをdrivers/etc/hosts
ファイルに追加しました:127.0.0.1 www.myapp.app
。
この時点で私はこれが私の問題を引き起こしていると確信しています。
アイデア?
また、それは、次の要求が、このコントローラとアクションにマップされたことを示しています:
GET SMS
GET SMS/
アプリケーションの洞察は私の要求は明らかに正しくマッピングされていると言う
GetSmsGET sms/getsms
GET sms/Index
GET Sms
GET/API/SMS
は、それが動作しないということであれば異なりますあなたのローカルマシンで*** localhost ***? – Win
ローカルマシンで試していますが、プロジェクトURLをlocalhostからmyappに変更しました。新しいプロジェクトでは、URLをそのまま残して、はい、それは動作します。カスタムURLを使用してWeb APIを設定する方法を理解できます。しかしMVCコントローラはうまくマッピングされていますが、WebApiコントローラは... – victor
コンベンションベースのルーティングを使用している場合、 'get GET http://www.myapp.app/api/sms'は – Nkosi