C# Sitecore 8.1中的Web API属性路由不工作
由于在sitecore 8.1开箱即用的版本中,属性路由不起作用,因此我将遵循C# Sitecore 8.1中的Web API属性路由不工作,c#,sitecore,asp.net-web-api-routing,sitecore8.1,C#,Sitecore,Asp.net Web Api Routing,Sitecore8.1,由于在sitecore 8.1开箱即用的版本中,属性路由不起作用,因此我将遵循 并获得了Krusen.Sitecore.WebApi.Custom的uget包 这是我的配置WebAPI类 public class ConfigureWebApi { public void Process(PipelineArgs args) { GlobalConfiguration.Configure(config => config.Routes.MapHttpRou
并获得了
Krusen.Sitecore.WebApi.Custom
的uget包
这是我的配置WebAPI
类
public class ConfigureWebApi
{
public void Process(PipelineArgs args)
{
GlobalConfiguration.Configure(config => config.Routes.MapHttpRoute(
name: "myApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
));
GlobalConfiguration.Configure(config => config.MapHttpAttributeRoutes());
GlobalConfiguration.Configure(ReplaceControllerSelector);
}
private static void ReplaceControllerSelector(HttpConfiguration config)
{
config.Services.Replace(typeof (IHttpControllerSelector),
new CustomHttpControllerSelector(config, new NamespaceQualifiedUniqueNameGenerator()));
}
}
这是我的控制器
[RoutePrefix("windows")]
public class WmsController : ApiController
{
[HttpGet]
[Route("hi")]
public IHttpActionResult Hello()
{
return Ok("Welcome to my Api.");
}
}
当我称之为:
http://my.api.local/api/wms/hello
有效。但是当我打电话的时候
http://my.api.local/api/windows/hi
不起作用。上面写着404
我错过了什么吗 您需要将“api/”添加到控制器属性路由中
[RoutePrefix("api/windows")]
public class WmsController : ApiController
{
[HttpGet]
[Route("hi")]
public IHttpActionResult Hello()
{
return Ok("Welcome to my Api.");
}
}
第二个调用不起作用,因为必须在基于约定的路由之前配置属性路由,以避免路由冲突
公共作废流程(PipelineArgs args){
GlobalConfiguration.Configure(配置=>{
//映射属性路由
config.maphttpAttribute路由();
//基于地图惯例的路线
config.Routes.MapHttpRoute(
名称:“myApi”,
routeTemplate:“api/{controller}/{action}/{id}”,
默认值:新建{id=RouteParameter.Optional}
);
//用我们的自定义实现替换IHttpControllerSelector
替换控制器选择器(配置);
});
}
我也相信这是如何显示在文件中的联系回购
其次,基于ApiController
中的RoutePrefix(“窗口”)
和Route(“hi”)
,映射的属性Route将映射为
http://my.api.local/windows/hi
获取
http://my.api.local/api/windows/hi
要映射到所需的操作,您需要更新路由前缀,如其他答案中所述。根据您的配置,您是否应该调用http://my.api.local/windows/hi
?(无/api
)