【问题标题】:Webapi Controller - Routing not workingWebapi 控制器 - 路由不起作用
【发布时间】:2015-06-11 09:06:14
【问题描述】:

我的 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}"
         );

我的控制器:

    [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());
    }

GET 请求:http://localhost:60674/api/comments/TransformXMLToHTML

错误:在控制器“评论”上找不到与请求匹配的操作

谢谢大家!

【问题讨论】:

  • 你的控制器叫什么名字?您可以编辑以将周围的类定义包含到操作中吗?

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


【解决方案1】:

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

要纠正,要么删除该路由,要么向其添加一些 Route 约束以确保相关请求不匹配它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    • 2016-12-14
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    相关资源
    最近更新 更多