Веб-служба .NET (asmx), являющаяся серверной частью для устройств Android, не обслуживает устройства с одинаковыми IP-адресами. - PullRequest
0 голосов
/ 02 октября 2018

Вот в чем дело ... Я создал веб-сервис (asmx), который выполняет в классе длительную процедуру и возвращает результат.Веб-служба обслуживается в моей локальной Windows 10 IIS, подключенной к маршрутизатору с переадресацией портов.Android-устройство, подключенное к тому же маршрутизатору (как и iis), получает доступ к веб-службе в IIS с помощью внешнего IP-адреса (IP-адрес моего маршрутизатора в Интернете - для проверки).Я заметил, что первое устройство, обращающееся к службе, обслуживается нормально, но второе задерживает большое время обслуживания.Проверяя сеть, я обнаружил, что есть ограничения в обслуживании устройств с одного и того же IP.Я отключил одно из устройств от WLAN, и все заработало.Оба устройства были поданы в одно и то же время.Как я могу преодолеть эту проблему?

Заранее спасибо

1 Ответ

0 голосов
/ 14 ноября 2018

Поиск в Интернете Я обнаружил (есть большие шансы, что я могу ошибаться), что это может быть связано со стандартным поведением платформы DotNet, которая блокирует сеанс для первого в первом обслуживаемом устройстве:

Приложение ASP.NET для обслуживания нескольких запросов от одного процесса

и

Соединение Android http - несколько устройств не могут подключиться к одному серверу

Я предполагаю, что мой IIS предполагает, что попытка подключиться к веб-службе со второго устройства является еще одной попыткой того же устройства.Я также предполагаю, что он предполагает, что устройство является одним и тем же устройством, поскольку это одно и то же приложение с одинаковой внутренней средой, поражающей веб-службу, и оно не может сказать, что это два разных устройства.Я попытался воспроизвести эту ошибку и проверить, правильно ли я, попав на страницу отчетов IP в IIS с двух разных вкладок браузера редакции Mozzila Developer, но она работает нормально (поэтому я не уверен, что это проблема сеанса).Я также нашел сообщение, что проблема присутствует только в устройствах Android, но не было достаточно ясно, если сервер был IIS ... Упомянутое решение было "неправильный флаг в настройках ядра tcp - Повторное использование соединения".Говорит ли это кому-нибудь из вас?

Если проблема с блокировкой сеанса действительно существует, есть ли решение, позволяющее IIS отличить два устройства?Есть ли в IIS параметр, который изменит это поведение DotNet по умолчанию?

Я уверен, что есть решение (если действительно проблема заключается в блокировке сеанса), потому что я загрузил свой код на онлайн-сервер, и онотлично работает при ударе с двух устройств Android.Так что либо это не проблема блокировки сеанса, либо есть настройка, которая изменяет это поведение DotNet в IIS ... Кто-нибудь знает о такой настройке?

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