C# ASP MVC 4+;Web API

C# ASP MVC 4+;Web API,c#,asp.net,asp.net-mvc,asp.net-web-api,C#,Asp.net,Asp.net Mvc,Asp.net Web Api,我有ASP MVC4项目和Web API 我想从主应用程序使用Web API。我这样做: WebAPI项目 WebApiConfig.cs Global.asax 统计控制器 公共类统计控制器:ApiController{ TopUserFactory TopUserFactory=新的TopUserFactory(); //获取api/statistics/topUsers [ActionName(“顶级用户”)] 公共列表Get(){ 返回topUserFactory.Top10Users

我有ASP MVC4项目和Web API

我想从主应用程序使用Web API。我这样做:

WebAPI项目

WebApiConfig.cs

Global.asax

统计控制器

公共类统计控制器:ApiController{
TopUserFactory TopUserFactory=新的TopUserFactory();
//获取api/statistics/topUsers
[ActionName(“顶级用户”)]
公共列表Get(){
返回topUserFactory.Top10Users();
}
}

但是当我选择
localhost:31003/api/statistics/{topUsers}


如何使用其他项目中的WebAPI项目?

您的代码看起来不错。WebAPI很容易使路由出错,请确保执行的是参数较少的get-to


否则,请使用此工具:

在本地处理多个站点时,它们将具有不同的端口号

您可以通过单击任务栏上的IIS Express图标来检查端口号:

您可以通过添加配置来更改端口号:


在本地运行时,这两个站点将具有不同的端口,请确保使用正确的端口。localhost:31003/api/statistics/topUsers请尝试this@ryan-searle如何定义每个站点的端口?请参见此处
public static void Register(HttpConfiguration config) {
            config.MapHttpAttributeRoutes();
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
            config.Formatters.JsonFormatter.SupportedMediaTypes
                                           .Add(new MediaTypeHeaderValue("text/html"));
}
protected void Application_Start() {
            GlobalConfiguration.Configure(WebApiConfig.Register);
}
public class StatisticsController : ApiController {
        TopUserFactory topUserFactory = new TopUserFactory();
        // GET api/statistics/topUsers
        [ActionName("topUsers")]
        public List<TopUser> Get() {
            return topUserFactory.Top10Users();
        }
}