Приложение ASP.NET REST вернуло 400 (неверный запрос) - PullRequest
0 голосов
/ 12 января 2019

Моя служба REST (ASP.NET, работающая в Azure как AppService) работала нормально до недавнего минимального изменения. Если я перейду к https://update.windward.net/, он вернется нормально. Но POST к https://update.windward.net/Service/version возвращает 400.

Я на 99% уверен, что моя служба не вызывается, что это происходит до этого. Вот точки входа в сервис:

        [WebGet(UriTemplate = "")]
        public string GetTest()
        {
            return $"Windward update REST service version {AssmVersion}; " +
                   $"Newest AutoTag version: {ConfigurationManager.AppSettings["AutoTagVersion"]}; " +
                   $"Most recent exception {mostRecentTime:G} : {mostRecentError}";
        }


        [WebInvoke(UriTemplate = "Service/version", Method = "POST", RequestFormat = WebMessageFormat.Xml,
            ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Bare)]
        public XmlElement GetVersion(XmlElement root)
        {

            try
            {
//...
            }
            catch (Exception ex)
            {
                log.Error("GetVersion", ex);
                mostRecentError = $"GetVersion({root.Name}): {ex.Message}";
                mostRecentTime = DateTime.UtcNow;
                throw;
            }
        }

У меня проблемы с настройкой ведения журнала, поэтому все, что у меня есть для отладки, это строка mostRecentError.

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Более интересная вещь для тех, у кого похожая проблема - это то, как я нашел проблему.

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

Итак, пункт № 1 - получение 400, вероятно, означает, что ваш сервис вызывается, но выдает исключение.

И пункт № 2, ведение журнала работает, но инструмент Azure намного лучше (по крайней мере, в моем случае).

0 голосов
/ 13 января 2019

Я предлагаю вам убрать RequestFormat, ResponseFormat и BodyStyle из атрибута и изменить параметр метода root на string, чтобы узнать, поступают ли запросы в метод или нет.

Как только вы это установите, попробуйте добавить удаленный / измененный код (по одному), чтобы увидеть, что влияет на вызов метода.

Надеюсь, это поможет!

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