首页新闻找找看学习计划

WebApi命名空间和多个Get、POST方法的路由问题如何解决,求万能的老司机搭救。(VS 2015)

0
悬赏园豆:30 [已解决问题] 解决于 2017-03-21 13:14

        项目整体架构:Domain、IDao、DaoImpl、IBll、Bll 、WebAPI和UI,其中WebAPI调用Bll层的方法,进而适配各个终端(Web、APP、手机)等的调用。

        看了很多资料,但是Namespace和多个Get、POST方法就是访问不了,找不到Action,求各位老司机带带。

0、错误问题

     

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Message>
找不到与请求 URI“http://localhost:56320/api/UniUserController/GetUniUsersTopN/U201290002101”匹配的 HTTP 资源。
</Message>
<MessageDetail>在控制器“UniUser”上找不到与该请求匹配的操作。</MessageDetail>
</Error>
或者
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Message>出现错误。</Message>
<ExceptionMessage>
找到了与该请求匹配的多个操作: 类型 Winder.Xj.Api.UniUserController 的 GetAllUniUsers 类型 Winder.Xj.Api.UniUserController 的 GetAllUniUsers
</ExceptionMessage>
<ExceptionType>System.InvalidOperationException</ExceptionType>
<StackTrace>
 

1WebAPI

     WebAPI带有命名空间和多个Get  POST方法,示例如下:

namespace Winder.Xj.Api

/// <summary>
/// ClassName: dbo.UniUserController
/// Date Auther Record
/// 2017/3/9 16:27:49 Winder Creating 
/// </summary>

public class UniUserController : ApiController
{

[HttpGet] 
public int CountUniUser()
{
return UniUserManager.CountUniUser();
}

[HttpPut]
public int AddUniUser(UniUser uniUser)
{

return UniUserManager.AddUniUser(uniUser);
}

[HttpPut]
public int AddUniUser(Hashtable h)

return UniUserManager.AddUniUser(h);
}

[HttpDelete]
public int DeleteUniUser(string userId)
{
return UniUserManager.DeleteUniUser(userId);
}


[HttpDelete]
public int DeleteUniUser(UniUser uniUser)
{
return UniUserManager.DeleteUniUser(uniUser);
}
[HttpPost]
public int UpdateUniUser(UniUser uniUser)

return UniUserManager.UpdateUniUser(uniUser);


[HttpGet]
public UniUser GetUniUserByUserId(string userId)
{
return GetUniUserByUserId(userId);
}

[HttpGet]
public IList<UniUser> GetUniUsersTopN(int n)

return UniUserManager.GetUniUsersTopN(n);

[HttpGet]
public IList<UniUser> GetAllUniUsers()

return UniUserManager. GetAllUniUsers(); 
}

}

 2、路由注册

public static void Register(HttpConfiguration config)
{
// Web API 配置和服务

 

// Web API 路由
config.MapHttpAttributeRoutes();

//1、默认路由
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}Controller/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);

WesternWind的主页 WesternWind | 初学一级 | 园豆:7
提问于:2017-03-10 09:59
< >
分享
最佳答案
0

请求地址写的有问题啊,试试http://localhost:56320/api/UniUserController/GetUniUsersTopN?n=U201290002101

收获园豆:30
balahoho | 老鸟四级 |园豆:2123 | 2017-03-10 14:38
其他回答(1)
0

多个Get  POST方法的路由有什么问题?

诶碧司 | 园豆:1912 (小虾三级) | 2017-03-10 11:51
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Message>
找不到与请求 URI“http://localhost:56320/api/UniUserController/GetUniUsersTopN/U201290002101”匹配的 HTTP 资源。
</Message>
<MessageDetail>在控制器“UniUser”上找不到与该请求匹配的操作。</MessageDetail>
</Error>
支持(0) 反对(0) WesternWind | 园豆:7 (初学一级) | 2017-03-10 12:11

@WesternWind:
请求URI有问题,GetUniUsersTopN方法你想调用的int类型的参数是什么?

URI可以设置为http://localhost:56320/api/UniUserController/GetUniUsersTopN?n=请求的int参数值

支持(0) 反对(0) 诶碧司 | 园豆:1912 (小虾三级) | 2017-03-11 14:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册