2017-07-31 9 views
1
[RoutePrefix("subscriptions")] 
    public class SubscriptionsController : ApiController 
    { 
     private SubscriptionsService _subscriptionsService; 

     public SubscriptionsController() 
     { 
      _subscriptionsService = new SubscriptionsService(); 
     } 

     [Route("{email}")] 
     [HttpGet] 
     public IHttpActionResult Get(string email) 
     { 

を見つけることができませんが、私は何のHTTPリソースが要求URIWebApi2はルート

'http://localhost:51561/api/subscriptions/myEmail' に一致する発見されなかった

http://localhost:51561/api/subscriptions/myEmail

をしようとします。

なぜですか?

また、私はあなたには、いくつかのWEBAPIサービスを作成していると仮定しWebApiCOnfig

public static class WebApiConfig 
    { 
     public static void Register(HttpConfiguration config) 
     { 
      // Web API configuration and services 

      // Web API routes 
      config.MapHttpAttributeRoutes(); 

      config.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{id}", 
       defaults: new { id = RouteParameter.Optional } 
      ); 
     } 
    } 
+1

経路のベースとして/ apiを設定していますか?世界的に?あなたは/ myEmailにナビゲートしていますが、あなたの行動ルートが示すように/ emailではありません。私は/購読/電子メールと/ api /購読/電子メールのいずれかが最初に動作するかどうかを確認しようとします。 –

+0

'http:// localhost:51561/subscriptions/myEmail'を試したことがありますか? –

+0

は/ apiで始まり、WebApiConfigに設定されていなければなりません – mbrc

答えて

1

あなたは間違ったURLを試しました。 正しいURLはその後

[RoutePrefix("API/subscriptions")] 

、あなたはAPIのプレフィックスが必要な場合は、その後、あなたは以下のようにコントローラのルートプレフィックスを変更する必要が

http://localhost:51561/subscriptions/myEmail 

OR

、このURLでなければなりません動作します。

http://localhost:51561/api/subscriptions/myEmail 

ここでは、2つのルーティング、デフォルトルーティングと属性ルーティングを使用しています。属性のルーティングを続行する必要がある場合は、デフォルトのルーティングをコメントアウトすることができます。

//config.Routes.MapHttpRoute(
      // name: "DefaultApi", 
      // routeTemplate: "api/{controller}/{id}", 
      // defaults: new { id = RouteParameter.Optional } 
0

のすべてを設定しますか?このルートをglobal.asax.csに登録しましたか?このようなもの:

 httpConfiguration.Routes.MapHttpRoute(
      name: "MyWebApi", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { controller = "ControllerName", action = "ActionName", id = RouteParameter.Optional }, 
      constraints: null 
     );