Служба приложений не может десериализовать ответ XElement - PullRequest
0 голосов
/ 22 января 2020

Я имею дело с устаревшей веб-службой, которая нормально работала в облачной службе. Теперь, когда мы развернули это в службе приложений

Мы не смогли получить успешный ответ.

Методы службы выглядят следующим образом:

    [HttpGet]
    [Route("GetData")]
    public XElement GetData()
    {
        return GetXmlData();
    }

    private XElement GetXmlData()
    {
        return new XElement("Object",
                                      new XAttribute("Name1", "Value1"),
                                      new XAttribute("Name2", "Value2"),
                                      new XAttribute("Name3", "Value3")
                            );
    }

Ответ говорит: ошибка произошло.

Когда я проверил Application Insights, я вижу следующие исключения:

Нулевое значение не может быть сериализовано на верхнем уровне для системы IXmlSerializable root type 'System. Xml .Linq.XElement ', поскольку для параметра IsAny установлено значение' true '. Этот тип должен записывать все свое содержимое, включая элемент root. Убедитесь, что реализация IXmlSerializable верна.

Можно ли решить эту проблему без значительных изменений? Если есть необходимые изменения, я бы предпочел, чтобы изменения были внесены в эту услугу, а не в потребителей.

1 Ответ

0 голосов
/ 26 января 2020

Речь не шла о невозможности вернуть XElement без root. Ошибка Application Insights не связана с root причиной, по которой конечная точка не смогла вернуть XElement. Это было исключение доступа к файлу. Наш сервер был развернут в облачной службе, и мы могли записывать журналы в файл. Теперь, когда мы развернули его в службе приложений, мы больше не могли делать эти журналы в файл. После отключения мы можем получить XElement из бэк-энда.

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