Javascript asp.net web api应用程序中的Route和RoutePrefix问题
我有一个web api应用程序,需要在其中更改路由配置 JavascriptJavascript asp.net web api应用程序中的Route和RoutePrefix问题,javascript,c#,ajax,asp.net-mvc-5,asp.net-web-api2,Javascript,C#,Ajax,Asp.net Mvc 5,Asp.net Web Api2,我有一个web api应用程序,需要在其中更改路由配置 Javascript $.ajax({ type: "GET", url: "api/collaborators", success: function (data) { }}); 在控制器中 [RoutePrefix("api/")] public class AccountManageController : BaseApiController { [Auth
$.ajax({
type: "GET",
url: "api/collaborators",
success: function (data) {
}});
在控制器中
[RoutePrefix("api/")]
public class AccountManageController : BaseApiController
{
[Authorize]
[HttpGet]
[Route("collaborators")]
public IEnumerable<CollaborateurModel> GetAllCollaborators() {...}
}
我需要知道
谢谢,属性路由和模板路由是两件不同的事情 如果路由规则与配置的路由模板“匹配”,则无需添加自定义属性 但是,如果您想为“特殊”路由/操作使用属性,那么use必须将
maphttpAttribute路由()
添加到路由注册逻辑中(在第一次config.routes.MapHttpRoute…
调用之前)
如果没有此选项,则可以通过
/api/AccountManage/GetAllCollaborators
url(根据您的第一个路由模板“DefaultApi”)访问您的方法GetAllCollaborators
。属性路由和模板路由是两件不同的事情
如果路由规则与配置的路由模板“匹配”,则无需添加自定义属性
但是,如果您想为“特殊”路由/操作使用属性,那么use必须将maphttpAttribute路由()
添加到路由注册逻辑中(在第一次config.routes.MapHttpRoute…
调用之前)
如果没有此选项,可以通过/api/AccountManage/GetAllCollaborators
url(根据您的第一个路由模板“DefaultApi”)1)访问您的方法GetAllCollaborators
,但您没有
2) 这就是你修复它的方法。
1) 您正在尝试使用,但您没有
2) 这就是你修复它的方法。
你把
mapmvcatteroutes
和maphttpatteroutes
Oops搞混了,你说得对。我已经深入了解了vNext,MVC和WebAPI是统一的,对不起。修正了。你混淆了mapmvcattributteroutes
和maphttpattributteroutes
Oops,你说得对。我已经深入了解了vNext,MVC和WebAPI是统一的,对不起。固定的。
public static class WebApiConfig
{
public static string UrlPrefix { get { return "api"; } }
public static string UrlPrefixRelative { get { return "~/api"; } }
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: WebApiConfig.UrlPrefix + "/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi2",
routeTemplate: WebApiConfig.UrlPrefix + "/{controller}"
);
}
}
public static class WebApiConfig {
public static string UrlPrefix { get { return "api"; } }
public static string UrlPrefixRelative { get { return "~/api"; } }
public static void Register(HttpConfiguration config) {
//Enable Web API Attribute routing.
config.MapHttpAttributeRoutes();
// Other Web API configuration
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: WebApiConfig.UrlPrefix + "/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi2",
routeTemplate: WebApiConfig.UrlPrefix + "/{controller}"
);
}
}