Asp.net web api 带有Sitecore 8.1的Web Api
我一直在尝试让Web Api与Sitecore 8.1配合使用 我安装了此软件包:并将Asp.net web api 带有Sitecore 8.1的Web Api,asp.net-web-api,sitecore,sitecore8.1,Asp.net Web Api,Sitecore,Sitecore8.1,我一直在尝试让Web Api与Sitecore 8.1配合使用 我安装了此软件包:并将配置WebAPI修改为以下内容: public class ConfigureWebApi { public void Process(PipelineArgs args) { GlobalConfiguration.Configure(config => config.Routes.MapHttpRoute("API Default", "api/{controller}
配置WebAPI
修改为以下内容:
public class ConfigureWebApi
{
public void Process(PipelineArgs args)
{
GlobalConfiguration.Configure(config => config.Routes.MapHttpRoute("API Default", "api/{controller}/{id}",
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()));
}
}
但是,每当我使用post请求时,都会出现以下错误:
{“Message”:“请求的资源不支持http方法
“POST.”。让请求工作
这是控制器的实现:
[RoutePrefix("api/authentication")]
public class AuthenticationController : ApiController
{
[Route("email")]
[HttpPost]
public bool Login([FromBody] string email)
{
return true;
}
}
我找出了错误所在。当我的控制器被称为AuthenticationController时,它出现以下错误: 找不到请求的文档 如果我把它叫做别的东西,那么WebAPI就是一种魅力
public TestController : ApiController {
//Code goes here
}
我认为您的路由配置一定有问题,或者您可能使用了MVC名称空间中的
httpposattribute
,而不是System.Web.Http
。我猜你是在http://yourdomain.com/api/authentication/email
?@SørenKruse是的,我测试的URL就在你写的时候,正文中有一个随机字符串。我正在使用System.Web.Http.HttpPost attributeOkay,您是否尝试过不使用您添加的API Default
路由?@SørenKruse如果删除路由,我会得到正常的Sitecore错误:未找到请求的文档以及course@SilentTremor对不起,我不明白该怎么做?由于HttpPost
属性,它甚至不应该接受GET请求,但它完全忽略了它。身份验证控制器已经是Sitecore的一个。事实上这是第一个注册的!是否有Sitecore注册的控制器列表?