Проблема с подключением к мобильной серверной части Azure в ASP.Net Core 2.1

Я работаю над веб-приложением ASP.Net Core и пытаюсь подключить его через мобильный сервер Azure.

Бэкэнд хорошо работает с другими настольными приложениями Windows. Также серверная часть до сих пор хорошо работала с ASP.Net Core v2.0. Вчера я установил SDK ASP.Net Core 2.1 и обновил пакет Nuget Microsoft.AspNetCore.All с 2.0 до 2.1.2, и с тех пор я получаю следующее исключение: MobileServiceInvalidOperationException - «Сервер не предоставил ответ с ожидаемым содержание."

Подскажите какое-нибудь решение этой проблемы?


person István Piroska    schedule 23.07.2018    source источник


Ответы (2)


Также серверная часть до сих пор хорошо работала с ASP.Net Core v2.0. Вчера я установил SDK ASP.Net Core 2.1 и обновил пакет Nuget Microsoft.AspNetCore.All с 2.0 до 2.1.2, и с тех пор я получаю следующее исключение: MobileServiceInvalidOperationException - «Сервер не предоставил ответ с ожидаемым содержание."

Согласно вашему описанию, ваш мобильный сервер Azure может нормально работать с ASP.Net Core v2.0. AFAIK, мобильный бэкэнд просто предоставляет вам простой способ предоставить вам конечные точки таблицы / API. Более того, как ваше веб-приложение соединялось с мобильным сервером с помощью HttpClient или Azure Mobile Клиентский SDK?

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

person Bruce Chen    schedule 27.07.2018
comment
Я думаю, что использую последнюю версию Mobile Client SDK, установив последний пакет Nuget Microsoft.Azure.Mobile.Client (v4.0.2). Наконец, я смог заставить его работать, понизив все связанные с ASP.NetCore пакеты nuget до последних версий v2.0.x, а также понизив целевую платформу до .Net Core 2.0. Я снова попробую .NetCore 2.1 после некоторых обновлений, надеюсь, это будет исправлено. - person István Piroska; 31.07.2018
comment
Я тоже решил эту проблему, перейдя с .Net Core 2.1 на .Net Core 2.0. Моя основная причина для обновления с 2.0 до 2.1 заключалась в том, что мне нужен SignalR. Как оказалось, я обнаружил, что могу использовать SignalR без каких-либо изменений в моем коде в версии 2.0 - я просто последовал этому совету: blogs.msdn.microsoft.com/webdev/2017/09/14/. - person MrBlueSky; 19.10.2018

У меня такая же проблема, но решения нет. Я проследил это до следующей строки кода в MobileServiceHttpClient коде функции SendRequestAsync(...).

// If there was supposed to be response content and there was not, throw        
if (ensureResponseContent)
{
   long? contentLength = null;

   if (response.Content != null)
   {
      contentLength = response.Content.Headers.ContentLength;
   }

   if (contentLength == null || contentLength <= 0)
   {
        throw new MobileServiceInvalidOperationException("The server did not provide a response with the expected content.", request, response);
   }
}

Глядя на response.Content.Headers.ContentLength, получается null. При запуске приложения как проекта 2.0 Core значение указано правильно. Что странно, так это то, что контент есть.

Если вы перейдете к закрытым членам, некоторые из них будут установлены правильно.

catch (MobileServiceInvalidOperationException msioe)
{
    //content will contain the correct json but the ContentLenth is null!?!
    string content = await msioe.Response.Content.ReadAsStringAsync();

}

Это основная проблема 2.1. Надеюсь, они это исправят.

person Ed Barnes    schedule 07.08.2018
comment
Я создал проблему github.com/Azure/azure-mobile -apps-net-client / issues / 467 - person Stef Heyenrath; 18.10.2018
comment
Спасибо, что подняли этот вопрос с помощью MS @Stef. Ответ от MS: мы не будем это исправлять. Ой !! Переход на .NET Core 2.0 будет для меня болезненным. Кто-нибудь понимает, что такого в переходе на 2.1, который сломал мобильные приложения Azure? Может быть, это даст нам ключ к решению проблемы ..? - person MrBlueSky; 19.10.2018
comment
В итоге мы просто заменили мобильный клиент Azure нашим собственным расширенным классом HttpClient. Вы теряете возможность синхронизации, но для чтения, записи и т. Д. Она работает. - person Ed Barnes; 19.10.2018
comment
@EdBarnes; Хорошая идея. Задумывался о создании клиента на базе RestEase. - person Stef Heyenrath; 19.10.2018
comment
@MrBlueSky; вы можете просто загрузить исходный код и включить этот проект в качестве ссылки в свой пример проекта. Может быть, я сделаю то же самое на следующей неделе. - person Stef Heyenrath; 19.10.2018