2016-06-19 9 views
1

私は、属性ルーティングに基づいてWebApi2セットアップに苦労しています。問題の可能性があるアイデアがなくなりました。次のコードは、Visual Studio 2015で新しく作成されたWebApiプロジェクトです。変更はありません。単に機能しません。なぜこのwebapi2属性ルーティングが機能していないのですか?

<Error> 
<Message> 
No HTTP resource was found that matches the request URI 'http://.../services/webapi2/api/dummies/dummymethod'. 
</Message> 
<MessageDetail> 
No type was found that matches the controller named 'dummies'. 
</MessageDetail> 
</Error> 

私がこれまでにやった: - すべては罰金だとドキュメンテーションのために合う、私は何かを逃したかどうか

  • 私はドキュメントをチェックして

    応答は次のよう述べています。

  • は、私は役に立つ何かを見つけるかどうかをここで使用可能な答えをチェックした - 私は事前に任意の助け

おかげなし成功したすべてのものを試してみました!

DummyController.cs

using System.Web.Http; 

namespace WebApi2.Controllers 
{ 
    [RoutePrefix("Dummies")] 
    public class Dummy : ApiController 
    { 
     [Route("dummymethod")] 
     public string Get() 
     { 
      return "asdasd"; 
     } 
    } 
} 

WebApiConfig.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web.Http; 

namespace WebApi2 
{ 
    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 } 
      ); 
     } 
    } 
} 

インストールされているパッケージ:

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net452" /> 
    <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net452" /> 
    <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net452" /> 
    <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net452" /> 
    <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net452" /> 
    <package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net452" developmentDependency="true" /> 
    <package id="Newtonsoft.Json" version="6.0.4" targetFramework="net452" /> 
</packages> 

答えて

4

あなただけdummiesのルートプレフィックスとルーティング属性を使用しているので、それがマッピングされますこのURLへ

http://.../services/webapi2/dummies/dummymethod 

だから、どちらかあなたの例で使用されるURL

namespace WebApi2.Controllers 
{ 
    [RoutePrefix("api/Dummies")] 
    public class Dummy : ApiController 
    { 
     //GET api/dummies/dummymethod 
     [HttpGet] 
     [Route("dummymethod")] 
     public string Get() 
     { 
      return "asdasd"; 
     } 
    } 
} 

に一致するように上記のURLを使用するか、apiを含めるようにルートプレフィックスを更新上記のリクエストURI http://.../services/webapi2/api/dummies/dummymethod

と一致します
関連する問題