Рейтинг:
1
Richard Deeming
Если вы не контролируете клиента, то вы не можете изменить клиента.
Зачем вам нужно заменять совершенно допустимую кодировку строки запроса на недопустимую пользовательскую кодировку? Все после первого #
является частью фрагмента, а не строкой запроса, и не отправляется на сервер.
Payman Biukaghazadeh
Потому что наш API говорит:запрос, указанный в URI, недопустим. Значение DateTimeOffset текст '2020-09-28T00:00:00' должен быть в формате 'гггг-мм-ддтчч:мм:СС (''. с+)?(пппппп)?', а каждое поле значение находится в пределах допустимого диапазона
После того как мы заменили знаки + на %2b, все стало хорошо. Здесь мы не могли изменить url-адрес, который отправляет клиент. Мы хотим найти решение, чтобы иметь возможность изменить url-адрес на нашей стороне (веб-api)
Richard Deeming
%2b
это отличается от того, что вы сказали в своем вопросе: "измените этот знак плюс на #2b".
%2b
является ли URL-кодировка +
знак. Один +
в URL - адресе есть закодированный пробел. Ни один из них не является тем форматом, который вы указали.
Вы должны сказать своим клиентам, чтобы они правильно кодировали свои вызовы API.
Payman Biukaghazadeh
Я не мог изменить сторону клиента. Потому что он был отправлен из виртуальных сущностей Dynamics 365, и у нас нет никакого контроля над форматом url-адреса. Таким образом, мы должны быть в состоянии изменить + на %2b
Richard Deeming
URL - адрес от клиента является недопустимым. Если вы не можете изменить клиента, то вы не можете исправить клиента. Клиент не может вызвать ваш API, если он правильно не закодирует параметры запроса.
Payman Biukaghazadeh
Я это знаю. Но это было невозможно сделать. Есть ли какое-либо решение для стороны API? Например, в IIS или в коде API?
Richard Deeming
Если вы не можете изменить клиента для выполнения допустимых вызовов вашего API, то клиент не может вызвать ваш API.