Asp.net web api 带有Sitecore 8.1的Web Api

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}

我一直在尝试让Web Api与Sitecore 8.1配合使用

我安装了此软件包:并将
配置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注册的控制器列表?