Пользовательский маршрут OData не разрешается - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь настроить собственный маршрут OData для проекта Web API, который я создаю.Намерение состоит в том, что я хотел бы иметь возможность передавать параметр через маршрут для фильтрации результатов.

Маршрут никогда не разрешается в моем методе, я получаю ошибку 404, когда пытаюсь перейти к немув браузере.

Я последовал предложению внизу принятого ответа для на этот вопрос .

Если ссылка не работает, это означает, что я попытался зарегистрироватьсядля функции ODataModelBuilder и установите ее для принятия параметра.

Сначала я хочу зарегистрировать функцию в WebApiConfig.cs, как показано в примере.Это делается так:

ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<myEntity>("Employees");

var function = builder.Function("GetByEmail");
function.Parameter<string>("Email");
function.ReturnsFromEntitySet<myEntity>("Employees");

config.MapODataServiceRoute(
    routeName: "ODataRoute",
    routePrefix: null,
    model: builder.GetEdmModel()
);

Теперь у меня есть метод, к которому я хочу направить.Внутри EmployeesController.cs у меня есть следующий метод:

[EnableQuery]
[ODataRoute("GetByEmail(Id={email})")]
public SingleResult<myEntity> GetByEmail([FromODataUri] string email)
{
    var test = email;  // I have a breakpoint sitting here to see if I ever get into the function.
    ...
}

На самом деле я никогда не вхожу в эту функцию.

Когда я попадаю на маршрут http://localhost:49707/GetByEmail(email=abc), я получаю .Net Frameworkошибка «Ошибка сервера в« / »приложении».

Просто для тестирования, когда я попадаю на маршрут http://localhost:49707/GetByEmail, я получаю XML-сообщение об ошибке «Не найден ресурс HTTP, соответствующий URI запроса».

Как вы можете догадаться, ожидаемый результат заключается в том, что я могу заставить этот URI правильно направить свою функцию.

Я могу выполнять все необходимые операции, как только я попадаю в эту функцию, но я новичок в маршрутизации OData, и я просто не могу понять, чего мне не хватает в контрольном вопросе.

...