2014-11-24 2 views
2

У меня есть самопринятая служба WCF, который предоставляет только одну WebInvoked операции с адресом и параметрами, например:WCF Пользовательских страниц ошибки при самостоятельном хостинге (без IIS)

www.myserver.com/myservice/SayHello?LuckeyNumber=3 (where LuckeyNumber : int) 

Теперь, когда кто-то пытается для доступа к этому адресу, но с LuckeyNumber=EvilInput Я получаю страницу ошибки WCF, которую я бы хотел заменить на странице (аналогично Twitter Fail Whale).

  1. Как заменить эту страницу?
  2. Могу ли я заменить страницу также на 404s, 405s и т. Д.?

Спасибо!

+0

Может быть связано с этим вопросом SO: http://stackoverflow.com/questions/10600874/customize-wcf-rest-error-responses – Felix

+0

Почему служба должна возвращать страницу с читаемыми пользователем ошибками? Вам не нужно просто вернуть ошибку или ошибку 500? – Remotec

+0

@RemotecUk: 1. Для большей части мы этого не делаем. У нас есть конечная точка, которая возвращает HTML, и мы хотели, чтобы у нее была страница с пользовательскими ошибками. 2. Большинство наших услуг - JSON, а ошибки сериализуются как SOAP-Faults. 3. Из-за коробки WCF возвращает HTML-код для чтения, который мы хотим контролировать. – Felix

ответ

0

Для самостоятельного размещения WCF, если вы размещаете службы REST, вы можете добавить WebHttpBehavior для получения страницы HELP, но вы, безусловно, можете отправить информацию об исключении Fault (а не всю html-страницу) в ответ на вашу службу.

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

Вы должны всегда оставлять это решение у потребителя (не на уровне обслуживания), чтобы маскировать эти данные и отображать/регистрировать его по мере необходимости.

+1

Выход из решения для потребителя не является вариантом, поскольку это было обнаружено во время тестирования проникновения, и у сервера было 2 вещи, которые мы не могли обнажить: (1) сервер включал трассировку стека в исключении сбоя, позволяя злоумышленнику инженерную часть структуры нашего сервера и (2) возвращает строку 'EvilInput'. Если строка будет '' она была бы выполнена (a la XSS). – Felix