我的 MVC4 项目中有一个 WebApi 控制器ServicesApiController
,其签名如下:
[Authorize(Roles = "sysadmin,Secretary")]
[AcceptVerbs("GET", "POST")]
public IEnumerable<Stock> TopRankedStocks(int maxRecords)
{
// do stuff
return result;
}
我的 api 控制器的路由如下所示:
config.Routes.MapHttpRoute(
name: "ServicesApi",
routeTemplate: "api/{controller}/{action}",
defaults: new { controller = "ServicesApi", action="Index" }
);
使用 IIS Express,如果我http://localhost:62281/api/ServicesApi/TopRankedStocks?maxRecords=20
在浏览器中导航到,我会得到一个很好的 xml 数据对象列表。
但是,如果我这样称呼它:
myHttpClient.BaseAddress = "http://localhost:62281/";
var arguments = new List<KeyValuePair<string, string>>(new[] { KeyValuePair<string, string>("maxRecords", "10") });
var content = new FormUrlEncodedContent(arguments);
var result = myHttpClient.PostAsJsonAsync("/api/ServicesApi/TopRankedStocks", content).Result;
...我收到 404(未找到)错误。
POST 操作在我的代码中的其他地方工作。我的应用程序和 IIS Express 的配置文件都允许所有动词。我不知道为什么这不起作用。有人可以给我线索吗?
我不知道这是否是相关信息,但如果这里有一些价值,我会发布它:
- Windows 8 64 带 4GB 内存
- 带有 Resharper 的 Visual Studio 2012 专业更新 2
- IIS Express 8
- .NET 框架 4.5