Как неправильный заголовок XML (кодировка) можно изменить на лету в IIS перед его анализом классом WCF? - PullRequest
3 голосов
/ 07 декабря 2010

У меня есть клиент, отправляющий веб-запрос (POST) данных XML на сервер.Заголовок XML читает <?xml version="1.0" encoding="utf-16"?>, но данные действительно utf-8.Мы пытаемся перехватить существующий поток (и все, кто вовлечен в это, понимают это, мы пытаемся сохранить и переслать, поэтому, если есть какое-то время простоя, мы можем хотя бы буферизовать запросы), но IIS, похоже, отклоняет XML, потому чтофактическая кодировка не соответствует заявленной кодировке.

Если мы вручную (используя строку в качестве исходного значения в приложении-тесте-клиенте) принудительно закодировать тестовый поток и установить значение кодирования в строке на либо UTF-32 или UTF-8 в C # и вставьте его в наш метод WCF, он отлично работает.

Но отправка в кодированных в UTF-8 значениях с заголовком в файле, который читает UTF-16, взрывает.И, наконец, что наиболее раздражающе, я не являюсь основным разработчиком в этом вопросе. Я наблюдал за этим в общей сложности 6 часов в течение 4 дней, и передо мной стоит задача найти запасную часть магиилежал околоУ кого-нибудь есть идеи?

Так что моя проблема связана с IIS или ASP.NET, я это понимаю.Я просто не уверен, что и где пнуть эту проклятую вещь, и не уверен, какие детали мне не хватает в вопросе.Я написал это в чате до публикации здесь, и еще несколько деталей были раскрыты, но если у вас есть вопросы, я могу ответить на них, насколько смогу.Ты просто спроси, что ты хочешь увидеть, а я поделюсь.И я собираюсь отказаться от дальнейших действий и публиковать много-много кода на C # и web.config, потому что, честно говоря, я не знаю, какая лучшая отправная точка для решения этой конкретной проблемы.

То есть нет способа исправить заголовок на стороне клиента?

Не сейчас.Просто потратили 30 минут на групповую поддержку, и их основной разработчик для этого проекта отсутствует в течение следующих 10 дней, и наша группа по продажам пообещала, что наш продукт будет готов к концу этой недели

выдает ошибку, которая может быть захвачена?

Нет.Клиент сообщает об ошибке 400.Это наша способность выследить этого щенка, прямо сейчас .Я надеюсь, что кто-то здесь с большим количеством знакомых по IIS исправит это для меня;)


Поэтому я ищу либо

  • решение ASP.NET или IIS, котороепозволяет мне сказать входным данным, что мне все равно, что именно заявлено, кодировка, tyvm, я знаю лучше, ИЛИ
  • способ WCF перехватить поток до того, как он достигнет моих методов класса, а затем переписать строку намуха, исследуя для <?xml version="1.0" encoding="utf-16"?> по этому конкретному запросу.

1 Ответ

0 голосов
/ 07 декабря 2010

Вы можете рассмотреть возможность реализации собственного декодера.См. Следующий вопрос SO: Конфигурирование десериализатора .NET WCF UTF-8 для изменения / удаления кратчайших символов формы вместо выдачи исключения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...