To repro:
public class Movie
{
public string Name = null;
}
public class MoviesController : ApiController
{
[Queryable]
public IEnumerable<Movie> Get()
{
return new Movie[] {
new Movie {
Name = "Test"
}
}
}
}
Send request: http://localhost/api/Movies?filter=Name eq null
Response:
HTTP/1.1 400 Bad Request
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?YzpcdXNlcnNcaG9uZ3llc1xkb2N1bWVudHNcdmlzdWFsIHN0dWRpbyAyMDEyXFByb2plY3RzXE12Y0FwcGxpY2F0aW9uMlxNdmNBcHBsaWNhdGlvbjJcYXBpXE1vdmllcw==?=
X-Powered-By: ASP.NET
Date: Fri, 21 Sep 2012 18:30:50 GMT
Content-Length: 2070
{"$id":"1","Message":"The query specified in the URI is not valid.","ExceptionMessage":"Type 'MvcApplication2.Models.Movie' does not have a property 'Field'.","ExceptionType":"Microsoft.Data.OData.ODataException","StackTrace":" at Microsoft.Data.OData.Query.MetadataBinder.BindPropertyAccess(PropertyAccessQueryToken propertyAccessToken)\r\n at Microsoft.Data.OData.Query.MetadataBinder.Bind(QueryToken token)\r\n at Microsoft.Data.OData.Query.MetadataBinder.BindBinaryOperator(BinaryOperatorQueryToken binaryOperatorToken)\r\n at Microsoft.Data.OData.Query.MetadataBinder.Bind(QueryToken token)\r\n at Microsoft.Data.OData.Query.MetadataBinder.ProcessFilter(QueryNode query, QueryToken filter)\r\n at Microsoft.Data.OData.Query.MetadataBinder.BindTree(SyntacticTree syntax)\r\n at Microsoft.Data.OData.Query.MetadataBinder.BindQuery(SyntacticTree syntax)\r\n at Microsoft.Data.OData.Query.SemanticTree.ParseUri(Uri queryUri, Uri serviceBaseUri, IEdmModel model, Int32 maxDepth)\r\n at Microsoft.Data.OData.Query.SemanticTree.ParseUri(Uri queryUri, Uri serviceBaseUri, IEdmModel model)\r\n at System.Web.Http.OData.Query.FilterQueryOption.get_QueryNode() in C:\\dd\\DevDiv\\Offcycle\\WPT\\WebStackRuntime\\runtime\\src\\System.Web.Http.OData\\OData\\Query\\FilterQueryOption.cs:line 68\r\n at System.Web.Http.OData.Query.FilterQueryOption.ApplyTo(IQueryable query, ODataQuerySettings querySettings, IAssembliesResolver assembliesResolver) in C:\\dd\\DevDiv\\Offcycle\\WPT\\WebStackRuntime\\runtime\\src\\System.Web.Http.OData\\OData\\Query\\FilterQueryOption.cs:line 123\r\n at System.Web.Http.OData.Query.ODataQueryOptions.ApplyTo(IQueryable query, ODataQuerySettings querySettings) in C:\\dd\\DevDiv\\Offcycle\\WPT\\WebStackRuntime\\runtime\\src\\System.Web.Http.OData\\OData\\Query\\ODataQueryOptions.cs:line 185\r\n at System.Web.Http.QueryableAttribute.OnActionExecuted(HttpActionExecutedContext actionExecutedContext) in C:\\dd\\DevDiv\\Offcycle\\WPT\\WebStackRuntime\\runtime\\src\\System.Web.Http.OData\\QueryableAttribute.cs:line 173"}
public class Movie
{
public string Name = null;
}
public class MoviesController : ApiController
{
[Queryable]
public IEnumerable<Movie> Get()
{
return new Movie[] {
new Movie {
Name = "Test"
}
}
}
}
Send request: http://localhost/api/Movies?filter=Name eq null
Response:
HTTP/1.1 400 Bad Request
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?YzpcdXNlcnNcaG9uZ3llc1xkb2N1bWVudHNcdmlzdWFsIHN0dWRpbyAyMDEyXFByb2plY3RzXE12Y0FwcGxpY2F0aW9uMlxNdmNBcHBsaWNhdGlvbjJcYXBpXE1vdmllcw==?=
X-Powered-By: ASP.NET
Date: Fri, 21 Sep 2012 18:30:50 GMT
Content-Length: 2070
{"$id":"1","Message":"The query specified in the URI is not valid.","ExceptionMessage":"Type 'MvcApplication2.Models.Movie' does not have a property 'Field'.","ExceptionType":"Microsoft.Data.OData.ODataException","StackTrace":" at Microsoft.Data.OData.Query.MetadataBinder.BindPropertyAccess(PropertyAccessQueryToken propertyAccessToken)\r\n at Microsoft.Data.OData.Query.MetadataBinder.Bind(QueryToken token)\r\n at Microsoft.Data.OData.Query.MetadataBinder.BindBinaryOperator(BinaryOperatorQueryToken binaryOperatorToken)\r\n at Microsoft.Data.OData.Query.MetadataBinder.Bind(QueryToken token)\r\n at Microsoft.Data.OData.Query.MetadataBinder.ProcessFilter(QueryNode query, QueryToken filter)\r\n at Microsoft.Data.OData.Query.MetadataBinder.BindTree(SyntacticTree syntax)\r\n at Microsoft.Data.OData.Query.MetadataBinder.BindQuery(SyntacticTree syntax)\r\n at Microsoft.Data.OData.Query.SemanticTree.ParseUri(Uri queryUri, Uri serviceBaseUri, IEdmModel model, Int32 maxDepth)\r\n at Microsoft.Data.OData.Query.SemanticTree.ParseUri(Uri queryUri, Uri serviceBaseUri, IEdmModel model)\r\n at System.Web.Http.OData.Query.FilterQueryOption.get_QueryNode() in C:\\dd\\DevDiv\\Offcycle\\WPT\\WebStackRuntime\\runtime\\src\\System.Web.Http.OData\\OData\\Query\\FilterQueryOption.cs:line 68\r\n at System.Web.Http.OData.Query.FilterQueryOption.ApplyTo(IQueryable query, ODataQuerySettings querySettings, IAssembliesResolver assembliesResolver) in C:\\dd\\DevDiv\\Offcycle\\WPT\\WebStackRuntime\\runtime\\src\\System.Web.Http.OData\\OData\\Query\\FilterQueryOption.cs:line 123\r\n at System.Web.Http.OData.Query.ODataQueryOptions.ApplyTo(IQueryable query, ODataQuerySettings querySettings) in C:\\dd\\DevDiv\\Offcycle\\WPT\\WebStackRuntime\\runtime\\src\\System.Web.Http.OData\\OData\\Query\\ODataQueryOptions.cs:line 185\r\n at System.Web.Http.QueryableAttribute.OnActionExecuted(HttpActionExecutedContext actionExecutedContext) in C:\\dd\\DevDiv\\Offcycle\\WPT\\WebStackRuntime\\runtime\\src\\System.Web.Http.OData\\QueryableAttribute.cs:line 173"}