Как возвратить ошибки из веб-сервиса ASMX?

Основной ответ:

mylist = ["b", "C", "A"]
mylist.sort()

Это изменяет Ваш исходный список (т.е. оперативные виды). Получить отсортированную копию списка, не изменяя оригинал, использование sorted() функция:

for x in sorted(mylist):
    print x

Однако примеры выше немного наивны, потому что они не принимают локаль во внимание и выполняют чувствительную к регистру сортировку. Можно использовать в своих интересах дополнительный параметр key для определения пользовательского порядка сортировки (альтернатива, с помощью cmp, решение устаревшее, поскольку это должно быть оценено многократно - key, только вычисляется однажды на элемент).

Так, к виду согласно текущей локали, принимая определенные для языка правила во внимание ( cmp_to_key функция помощника от functools):

sorted(mylist, key=cmp_to_key(locale.strcoll))

И наконец, если Вам нужно, можно определить пользовательская локаль для сортировки:

import locale
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') # vary depending on your lang/locale
assert sorted((u'Ab', u'ad', u'aa'),
  key=cmp_to_key(locale.strcoll)) == [u'aa', u'Ab', u'ad']

Последнее примечание: Вы будете видеть примеры нечувствительной к регистру сортировки, которые используют lower() метод - те являются неправильными, потому что они работают только на подмножество ASCII символов. Те два являются неправильными при любых неанглийских данных:

# this is incorrect!
mylist.sort(key=lambda x: x.lower())
# alternative notation, a bit faster, but still wrong
mylist.sort(key=str.lower)

6
задан John Saunders 26 November 2010 в 23:22
поделиться

1 ответ

Да, это возможно.

Вам нужно будет изучить класс SoapException и, в частности, свойство Detail из класс SoapException.

Класс SoapException будет эффективно отображать « Soap Fault », который является совместимым со стандартами механизмом для возврата информации об ошибках клиентам / потребителям из метода веб-службы.

Свойство «Detail» класса SoapException имеет тип XmlNode и, таким образом, может содержать либо один узел / элемент, либо иерархию дочерних узлов. Таким образом, узел "Подробности" может легко содержать и действовать как "родительский" для сериализованного представления вашего собственного объекта ошибки.

Из MSDN:

Свойство Detail предназначено для предоставления сведений об ошибках приложения, связанных с элементом Body запроса SOAP. Согласно спецификации SOAP, если ошибка возникает из-за того, что запрос клиента не может быть обработан из-за элемента Body запроса SOAP, необходимо установить свойство Detail. Если в записях заголовка запроса SOAP возникла ошибка, необходимо выбросить SoapHeaderException, чтобы сведения об ошибке возвращались в заголовке SOAP. Если ошибка не возникла из-за обработки элемента Body, то свойство Detail устанавливать нельзя.

При создании XmlNode для свойства Detail можно использовать свойства Name и Namespace свойства DetailElementName для обеспечения согласованности [sic] со спецификацией SOAP.

7
ответ дан 17 December 2019 в 00:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: