如何解决Web API 2 属性路由在 4.5 WebForms 项目中不起作用
我看到了许多与我的标题相似的其他问题,但似乎没有一个是我需要的相同问题或提供的见解。
我已将 Web API 控制器添加到现有的旧版 4.5 WebForms 应用程序中,并尝试在对现有代码库进行最少更改的情况下使其工作。因此,当您从头开始创建项目时,我没有典型的静态 WebApiConfig
类和其他默认创建的项目。我现有的代码库是:
Global.asax
protected void Application_Start( Object sender,EventArgs e )
{
GlobalConfiguration.Configure( config =>
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",routeTemplate: "api/{controller}/{id}",defaults: new
{
id = RouteParameter.Optional
}
);
} );
}
控制器
namespace Modeler.Endpoints
{
public class KatAppEndpoints : ApiController
{
[HttpGet]
[Route( "api/katapp/calculations" )]
public IEnumerable<string> GetCalculations()
{
return new string[] { "value1","value2" };
}
}
}
Javascript
$(document).ready(function() {
$.getJSON("api/katapp/calculations")
.done(function () { debugger; })
.fail(function (_jqXHR,errorStatus,errorMessage) { debugger; })
.always(function () { debugger; });
});
调用时,我点击了 fail
和 always
,结果是:
有什么明显我遗漏的地方吗?
更新
如果相反,我将控制器更改为...
namespace Modeler.Endpoints
{
public class KatAppsController : ApiController
{
public IEnumerable<string> Get()
{
return new string[] { "value1","value2" };
}
}
}
我的 javascript 到:
$.getJSON("api/katapps")
.done(function () { debugger; })
.fail(function (_jqXHR,errorMessage) { debugger; })
.always(function () { debugger; });
一切正常。但是,我有一些端点并想使用属性,但如果我能弄清楚如何在 url 中获取另一部分(即上面的 /calculations 部分),也许我会放弃它。
解决方法
不知道为什么,但这条评论指出了我正确的位置:https://stackoverflow.com/a/38130308/166231
所以即使我想使用属性路由并且可能不接近控制器名称是什么,我仍然必须以 *Controller
结束类名。将 KatAppEndpoints
重命名为 KatAppEndpointsController
后,一切正常。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。