属性路由不适用于两个或多个控制器
Attribute Routing not working with two or more controllers
我已经使用了属性路由并将 RoutePrefix() 设置为 FirstController 的默认路由。然后我创建了一个新的控制器并给出了它的默认路由。
在 Global.asax 中的 "GlobalConfiguration.Configure(WebApiConfig.Register);" 上生成运行时 System.ArgumentException,显示消息:
"A path segment cannot contain two consecutive parameters. They must
be separated by a '/' or by a literal string."
这是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)
{
//
}
}
这是我的 Global.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);
}
我正在尝试创建多个拥有自己默认路由的控制器。请帮忙。
显示的错误消息通常与类似
的路由模板相关联
Route("{Param1}{Param2}/{Param3})
其中两个连续的参数之间没有任何分隔,例如上例中的 {Param1}{Param2}
之间。该框架将无法使用此类模板来匹配路由,因为无论参数名称如何,它都无法识别要映射到操作的参数。
检查您的路线模板是否有拼写错误,因为很容易犯这种错误。
如果您无法一眼辨认,请尝试在您的代码中搜索 }{
。
我已经使用了属性路由并将 RoutePrefix() 设置为 FirstController 的默认路由。然后我创建了一个新的控制器并给出了它的默认路由。
在 Global.asax 中的 "GlobalConfiguration.Configure(WebApiConfig.Register);" 上生成运行时 System.ArgumentException,显示消息:
"A path segment cannot contain two consecutive parameters. They must be separated by a '/' or by a literal string."
这是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)
{
//
}
}
这是我的 Global.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);
}
我正在尝试创建多个拥有自己默认路由的控制器。请帮忙。
显示的错误消息通常与类似
的路由模板相关联Route("{Param1}{Param2}/{Param3})
其中两个连续的参数之间没有任何分隔,例如上例中的 {Param1}{Param2}
之间。该框架将无法使用此类模板来匹配路由,因为无论参数名称如何,它都无法识别要映射到操作的参数。
检查您的路线模板是否有拼写错误,因为很容易犯这种错误。
如果您无法一眼辨认,请尝试在您的代码中搜索 }{
。