Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript asp.net web api应用程序中的Route和RoutePrefix问题_Javascript_C#_Ajax_Asp.net Mvc 5_Asp.net Web Api2 - Fatal编程技术网

Javascript asp.net web api应用程序中的Route和RoutePrefix问题

Javascript 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

我有一个web api应用程序,需要在其中更改路由配置

Javascript

$.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}" 
            );
        }
    }