If below is defined in a controller:
[HttpGet]
[ODataRoute("Bug()")]
public IEnumerable<ConventionCustomer> Bug()
{
return _customers;
}
But function Bug() is not defined in the corresponding EdmModel, then if do some query such as ~/ValidFunction() then it reports error:
HTTP/1.1 500 Internal Server Error
Content-Length: 4052
Content-Type: application/json; charset=utf-8
Server: Microsoft-HTTPAPI/2.0
Date: Tue, 14 Jan 2014 13:14:41 GMT
{"Message":"An error has occurred.","ExceptionMessage":"The path template 'Bug()' on the action 'Bug' in controller 'ConventionCustomers' is not a valid OData path template. The given OData path template 'Bug()' is invalid.","ExceptionType":"System.InvalidOperationException","StackTrace":"
at System.Web.Http.OData.Routing.Conventions.AttributeRoutingConvention.GetODataPathTemplate(String prefix, String pathTemplate, HttpActionDescriptor action) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.OData\\OData\\Routing\\Conventions\\AttributeRoutingConvention.cs:line 274\r\n
at System.Web.Http.OData.Routing.Conventions.AttributeRoutingConvention.<>c__DisplayClass11.<GetODataPathTemplates>b__e(ODataRouteAttribute route) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.OData\\OData\\Routing\\Conventions\\AttributeRoutingConvention.cs:line 243\r\n
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()\r\n
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()\r\n
at System.Web.Http.OData.Routing.Conventions.AttributeRoutingConvention.BuildAttributeMappings(IEnumerable`1 controllers) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.OData\\OData\\Routing\\Conventions\\AttributeRoutingConvention.cs:line 199\r\n
at System.Web.Http.OData.Routing.Conventions.AttributeRoutingConvention.<>c__DisplayClass2.<>c__DisplayClass4.<.ctor>b__1() in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.OData\\OData\\Routing\\Conventions\\AttributeRoutingConvention.cs:line 59\r\n
at System.Web.Http.OData.Routing.Conventions.AttributeRoutingConvention.get_AttributeMappings() in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.OData\\OData\\Routing\\Conventions\\AttributeRoutingConvention.cs:line 121\r\n
at System.Web.Http.OData.Routing.Conventions.AttributeRoutingConvention.SelectController(ODataPath odataPath, HttpRequestMessage request) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.OData\\OData\\Routing\\Conventions\\AttributeRoutingConvention.cs:line 141\r\n
at System.Web.Http.OData.Routing.ODataPathRouteConstraint.SelectControllerName(ODataPath path, HttpRequestMessage request) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.OData\\OData\\Routing\\ODataPathRouteConstraint.cs:line 181\r\n
at System.Web.Http.OData.Routing.ODataPathRouteConstraint.Match(HttpRequestMessage request, IHttpRoute route, String parameterName, IDictionary`2 values, HttpRouteDirection routeDirection) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.OData\\OData\\Routing\\ODataPathRouteConstraint.cs:line 152\r\n
at System.Web.Http.Routing.HttpRoute.ProcessConstraint(HttpRequestMessage request, Object constraint, String parameterName, HttpRouteValueDictionary values, HttpRouteDirection routeDirection) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.Http\\Routing\\HttpRoute.cs:line 215\r\n
at System.Web.Http.Routing.HttpRoute.ProcessConstraints(HttpRequestMessage request, HttpRouteValueDictionary values, HttpRouteDirection routeDirection) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.Http\\Routing\\HttpRoute.cs:line 238\r\n
at System.Web.Http.Routing.HttpRoute.GetRouteData(String virtualPathRoot, HttpRequestMessage request) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.Http\\Routing\\HttpRoute.cs:line 143\r\n
at System.Web.Http.HttpRouteCollection.GetRouteData(HttpRequestMessage request) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.Http\\HttpRouteCollection.cs:line 82\r\n
at System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.Http\\Dispatcher\\HttpRoutingDispatcher.cs:line 67\r\n
at System.Net.Http.DelegatingHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\r\n
at System.Web.Http.HttpServer.<>n__FabricatedMethod9(HttpRequestMessage , CancellationToken )\r\n
at System.Web.Http.HttpServer.<SendAsync>d__0.MoveNext() in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.Http\\HttpServer.cs:line 223"}
[HttpGet]
[ODataRoute("Bug()")]
public IEnumerable<ConventionCustomer> Bug()
{
return _customers;
}
But function Bug() is not defined in the corresponding EdmModel, then if do some query such as ~/ValidFunction() then it reports error:
HTTP/1.1 500 Internal Server Error
Content-Length: 4052
Content-Type: application/json; charset=utf-8
Server: Microsoft-HTTPAPI/2.0
Date: Tue, 14 Jan 2014 13:14:41 GMT
{"Message":"An error has occurred.","ExceptionMessage":"The path template 'Bug()' on the action 'Bug' in controller 'ConventionCustomers' is not a valid OData path template. The given OData path template 'Bug()' is invalid.","ExceptionType":"System.InvalidOperationException","StackTrace":"
at System.Web.Http.OData.Routing.Conventions.AttributeRoutingConvention.GetODataPathTemplate(String prefix, String pathTemplate, HttpActionDescriptor action) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.OData\\OData\\Routing\\Conventions\\AttributeRoutingConvention.cs:line 274\r\n
at System.Web.Http.OData.Routing.Conventions.AttributeRoutingConvention.<>c__DisplayClass11.<GetODataPathTemplates>b__e(ODataRouteAttribute route) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.OData\\OData\\Routing\\Conventions\\AttributeRoutingConvention.cs:line 243\r\n
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()\r\n
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()\r\n
at System.Web.Http.OData.Routing.Conventions.AttributeRoutingConvention.BuildAttributeMappings(IEnumerable`1 controllers) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.OData\\OData\\Routing\\Conventions\\AttributeRoutingConvention.cs:line 199\r\n
at System.Web.Http.OData.Routing.Conventions.AttributeRoutingConvention.<>c__DisplayClass2.<>c__DisplayClass4.<.ctor>b__1() in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.OData\\OData\\Routing\\Conventions\\AttributeRoutingConvention.cs:line 59\r\n
at System.Web.Http.OData.Routing.Conventions.AttributeRoutingConvention.get_AttributeMappings() in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.OData\\OData\\Routing\\Conventions\\AttributeRoutingConvention.cs:line 121\r\n
at System.Web.Http.OData.Routing.Conventions.AttributeRoutingConvention.SelectController(ODataPath odataPath, HttpRequestMessage request) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.OData\\OData\\Routing\\Conventions\\AttributeRoutingConvention.cs:line 141\r\n
at System.Web.Http.OData.Routing.ODataPathRouteConstraint.SelectControllerName(ODataPath path, HttpRequestMessage request) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.OData\\OData\\Routing\\ODataPathRouteConstraint.cs:line 181\r\n
at System.Web.Http.OData.Routing.ODataPathRouteConstraint.Match(HttpRequestMessage request, IHttpRoute route, String parameterName, IDictionary`2 values, HttpRouteDirection routeDirection) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.OData\\OData\\Routing\\ODataPathRouteConstraint.cs:line 152\r\n
at System.Web.Http.Routing.HttpRoute.ProcessConstraint(HttpRequestMessage request, Object constraint, String parameterName, HttpRouteValueDictionary values, HttpRouteDirection routeDirection) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.Http\\Routing\\HttpRoute.cs:line 215\r\n
at System.Web.Http.Routing.HttpRoute.ProcessConstraints(HttpRequestMessage request, HttpRouteValueDictionary values, HttpRouteDirection routeDirection) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.Http\\Routing\\HttpRoute.cs:line 238\r\n
at System.Web.Http.Routing.HttpRoute.GetRouteData(String virtualPathRoot, HttpRequestMessage request) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.Http\\Routing\\HttpRoute.cs:line 143\r\n
at System.Web.Http.HttpRouteCollection.GetRouteData(HttpRequestMessage request) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.Http\\HttpRouteCollection.cs:line 82\r\n
at System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.Http\\Dispatcher\\HttpRoutingDispatcher.cs:line 67\r\n
at System.Net.Http.DelegatingHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\r\n
at System.Web.Http.HttpServer.<>n__FabricatedMethod9(HttpRequestMessage , CancellationToken )\r\n
at System.Web.Http.HttpServer.<SendAsync>d__0.MoveNext() in c:\\WebApi\\forks\\cysu\\odata\\src\\System.Web.Http\\HttpServer.cs:line 223"}