Asp.net web api Web API 1和路由
我使用WebAPI2创建了一个项目,但后来发现服务器运行的是2003。因此,我现在使用WebAPI1(.NET4)重新创建该项目 我正在将路由放置在App\u Start\WebApiConfig中Asp.net web api Web API 1和路由,asp.net-web-api,asp.net-web-api-routing,Asp.net Web Api,Asp.net Web Api Routing,我使用WebAPI2创建了一个项目,但后来发现服务器运行的是2003。因此,我现在使用WebAPI1(.NET4)重新创建该项目 我正在将路由放置在App\u Start\WebApiConfig中 config.Routes.MapHttpRoute( name: "ContactApi", routeTemplate: "api/{controller}/{email}/{firstname}/{lastname}/{source}" ); 我使用的url是 http:
config.Routes.MapHttpRoute(
name: "ContactApi",
routeTemplate: "api/{controller}/{email}/{firstname}/{lastname}/{source}"
);
我使用的url是
http://localhost:64470/api/Contacts/GetId?email=user5@company.com&firstname=joe&lastname=user&source=wer
这在WebAPI2中工作得很好,但我得到以下错误
找不到资源
下面是控制器类的一些部分
public class ContactsController : ApiController
public string GetId(string email, string firstname, string lastname, string source)
知道我缺少什么吗?路由模板要求参数{email}、{firstName}、{lastName}和{source}位于URI路径中。用下面的代码替换您的路线
config.Routes.MapHttpRoute(
name: "ContactApi",
routeTemplate: "api/{controller}"
);
并且它应该到达您的GetId方法-查询字符串参数不需要在路由中指定。要使用您正在使用的url调用操作,您需要具有以下路由:
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}"
);
我个人不会这么做。我只会使用默认路线:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
然后使用以下url调用APi:
http://localhost:64470/api/Contacts?email=user5@company.com&firstname=joe&lastname=user&source=wer
这不适合我。有没有一个工具可以告诉我IIS认为它应该去哪里?