代码之家  ›  专栏  ›  技术社区  ›  Priyank Mittal

属性路由不适用于两个或更多控制器

  •  -1
  • Priyank Mittal  · 技术社区  · 9 年前

    运行时系统。ArgumentException正在“GlobalConfiguration.Configure(WebApiConfig.Register);”上生成在全球范围内。asax显示消息:

    “路径段不能包含两个连续的参数。它们必须 由“/”或文本字符串分隔。“

    这是FirstController.cs

         [System.Web.Http.RoutePrefix("api/First")]
     public class FirstController : ApiController
     {
         [System.Web.Http.HttpGet]
         [System.Web.Http.Route("Method1/{Param1}/{Param2}")]
         public int Method1(string Param1, string Param2)
         {
           //
         }
         [System.Web.Http.HttpGet]
         [System.Web.Http.Route("Method2/{Param1}/{Param2}")]
         public int Method2(string Param1, string Param2)
         {
           //
         }
     }
    

    这是SecondController.cs

    [System.Web.Http.RoutePrefix("api/Second")]
     public class SecondController : ApiController
     {
         [System.Web.Http.HttpGet]
         [System.Web.Http.Route("Method3/{Param1}/{Param2}")]
         public int Method3(string Param1, string Param2)
         {
           //
         }
         [System.Web.Http.HttpGet]
         [System.Web.Http.Route("Method4/{Param1}/{Param2}")]
         public int Method4(string Param1, string Param2)
         {
           //
         }
     }
    

    这是我的全球。asax(以JSON格式返回数据)

    protected void Application_Start()
        {
            GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
            GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
            GlobalConfiguration.Configure(WebApiConfig.Register);
        }
    

    我正在尝试创建具有自己默认路由的多个控制器。请帮忙。

    1 回复  |  直到 9 年前
        1
  •  9
  •   Nkosi    9 年前

    显示的错误消息通常与路由模板相关,如

    Route("{Param1}{Param2}/{Param3})
    

    两个连续参数之间没有任何分隔 {Param1}{Param2} 在上面的例子中。框架将无法使用此类模板来匹配路由,因为无论参数名称如何,它都无法识别要映射到操作的参数。

    检查路线模板是否有输入错误,因为很容易犯这种错误。

    尝试搜索 }{ 如果你看不到它,那么就在你的代码中。

    推荐文章