VisualStudio2010でMVCRC4Web APIを使用して新しいサイトをセットアップしようとしましたが、機能していないようです。パラメーター値がメソッドに渡されることはありません。
私が知る限り、私はここで説明されているとおりにすべてを実行しました:http ://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api
ルート構成:
routes.Clear();
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new {
id = RouteParameter.Optional
}
);
以下は通常のMVCルートです。これを完全に削除して、競合が発生していないかどうかを確認しましたが、違いはありませんでした。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {
controller = "Home",
action = "Index",
id = UrlParameter.Optional
}
);
テストコントローラー:
public class TestController : ApiController
{
[HttpGet]
public int Double(int value)
{
return value * 2;
}
}
URL: http://localhost:1505/api/test/double/4
The parameters dictionary contains a null entry for parameter 'value' of
non-nullable type 'System.Int32' for method 'Int32 Double(Int32)' in
'MyAppName.Controllers.TestController'. An optional parameter must be a
reference type, a nullable type, or be declared as an optional parameter.
ああ。これは簡単ですよね?しかし、パラメータがマップされる結果にはならないようです。それの一体のために私も試しました
http://localhost:1505/api/test/double?id=4
変わりはない。パラメータにnull値を受け入れるようにすると、たとえば
public int Double(int? value)
実行されますが、value
常にnullです。
私は何が間違っているのですか?