Webapi控制器 - 路由无法正常工作

时间:2015-06-11 09:06:15

标签: asp.net-web-api controller asp.net-mvc-routing

我的webapi控制器出现问题,无法使其正常工作....

有什么问题?

这里是代码:

WeabiConfig.cs

        EnableCrossSiteRequests(config);

        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "Api",
            routeTemplate: "api/{controller}/{key}",
            defaults: new { key = RouteParameter.Optional }
        );

        // this i added
        config.Routes.MapHttpRoute(
            name: "Action",
            routeTemplate: "api/{controller}/{action}"
         );

myController的:

    [ActionName("TransformXMLToHTML")]
    [System.Web.Http.AcceptVerbs("GET")]
    [System.Web.Http.HttpGet]
    public IHttpActionResult TransformXMLToHTML()
    {
        string xsltString  = File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("~/Xml/inputXslt.xslt"));
        string inputXml = File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("~/Xml/inputXml.xml"));
        XslCompiledTransform transform = new XslCompiledTransform();
        using (XmlReader reader = XmlReader.Create(new StringReader(xsltString)))
        {
            transform.Load(reader);
        }
        StringWriter results = new StringWriter();
        using (XmlReader reader = XmlReader.Create(new StringReader(inputXml)))
        {
            transform.Transform(reader, null, results);
        }
        return Ok(results.ToString());
    }

获取请求:http://localhost:60674/api/comments/TransformXMLToHTML

错误:控制器上未找到任何操作'评论'与请求匹配

谢谢你们!

1 个答案:

答案 0 :(得分:0)

路由匹配从上到下发生,这意味着将返回与给定请求URL匹配的第一条路由。在这种情况下,请求匹配"api/{controller}/{key}"路由,该路由未指定默认操作。

要解决问题,请删除该路由,或者向其添加一些路径约束,以确保相关请求与之不匹配。