我的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
错误:控制器上未找到任何操作'评论'与请求匹配
谢谢你们!
答案 0 :(得分:0)
路由匹配从上到下发生,这意味着将返回与给定请求URL匹配的第一条路由。在这种情况下,请求匹配"api/{controller}/{key}"
路由,该路由未指定默认操作。
要解决问题,请删除该路由,或者向其添加一些路径约束,以确保相关请求与之不匹配。