Я пытаюсь обойти проблему с помощью стороннего фильтра. Мой текущий план состоит в том, чтобы поместить фильтр перед этим фильтром, чтобы «исправить» строку запроса, чтобы она не выдавала ошибку.
Я создал ActionFilterAttribute и добавил его в список фильтров. Работает нормально. Я добавляю свою логику в методе OnActionExecuting
.
Первый элемент context.HttpContext.Request.Query
имеет ключ, который является структурой json. Мне нужно изменить этот ключ на {}
.
. Проблема в том, что context.HttpContext.Request.Query
и context.HttpContext.Request.QueryString
доступны только для чтения.
Как я могу изменить context.HttpContext.Request.Query
или context.HttpContext.Request.QueryString
?
EDIT - Основная проблема:
BreezeJS сделалминимальный уровень обновления для поддержки .NET Core. В этом обновлении часть кода ожидает, что каждый вызов, имеющий какие-либо параметры, вернет IQueryable ( QueryFns.cs Строка 32 ). При чтении кода кажется, что это ошибка (вызывающая функция ( фактический фильтр ), похоже, просто ожидает, что ноль будет возвращен, а не исключение.)
В любом случае, это делаеточень тяжело перейти на .NET Core.
Я рассмотрел другие варианты, и если это не удастся, я продолжу их использовать:
- Отправьте запрос на удаление, чтобы исправить ошибку. проблема : Проект не принимал никаких запросов на получение более чем за полтора года. Поэтому кажется маловероятным, что мой запрос будет принят.
- Создайте свою собственную ветку: Я бы не хотел создавать и поддерживать отдельную версию с моим собственным конвейером сборки и публикации.
- Найдите способ заставить фильтр Breeze игнорировать вызов, когда результат не является IQueryable : я сейчас изучаю этот. (Этот вопрос.)
- Найдите способ отправить мой вызов от клиента по-другому, чтобы breeze игнорировал вызовы, которые не возвращают IQueryable : тип возврата вызова принадлежит службе,И это проблема с сервисом. Я бы предпочел не иметь тесной связи между службой и клиентом, так что клиент разрабатывает обходные пути для проблем фильтра службы.