【发布时间】:2017-07-05 09:00:19
【问题描述】:
我正在使用 Microsoft.AspNet.WebApi.Cors 使用 [EnableCors(...)] 属性为某些控制器(WebApi 和 OData)上的某些操作启用跨源请求。
这适用于所有 WebApi 请求和大多数 OData,但在特定控制器上,我们有两个 POST 操作,它们由 [ODataRoute(...)] 指定不同的路由,并且这些操作中的任何一个的预检请求都返回一个500 错误说“找到了与请求匹配的多个操作。看起来 CORS 不知道要查找 OData 路由。
有其他人遇到过这个问题并提出解决方案吗?
这里是路线配置:
// Web API routes
config.MapHttpAttributeRoutes();
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: null,
model: _GetModel());
// Web API configuration and services
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
这是具有重复操作的控制器:
[EnableCors("*", "*", "*")]
[ODataRoute("Action-1")]
[HttpPost]
public async Task<IHttpActionResult> Action(ODataActionParameters parameters, ODataQueryOptions<Guid> options)
{
...
}
[EnableCors("*", "*", "*")]
[ODataRoute("Action-2")]
[HttpPost]
public async Task<IHttpActionResult> Action(ODataActionParameters parameters, ODataQueryOptions<Guid> options)
{
...
}
【问题讨论】:
标签: c# asp.net-web-api2 odata