Проблемы с Internet Explorer Mobile и приложением MVC - PullRequest
3 голосов
/ 30 августа 2011

Я недавно сделал свое первое приложение MVC3, которое использует базу данных SQLCompact 4 (сначала через код EF4.1).Он отлично работает на нескольких браузерах.Однако, когда я использую его со своего телефона с WindowsPhone 7, иногда я сталкиваюсь с ошибками параллелизма и не выполняю регистрацию форм.Есть ли какая-то хитрость, о которой мне нужно знать?

РЕДАКТИРОВАТЬ: Что происходит (но не последовательно):

  • Я обновляю некоторые данные в IE mobile на странице Edit.cshtml.
  • После публикации движок отправляет обратно файл Details.cshtml, который показывает, что данные НЕ были обновлены
  • Однако, когда я проверяю в другом браузере, данные БЫЛИ обновлены.
  • Я снова следую за ActionLInk на страницу Edit.cshtml и пытаюсь снова обновить данные.
  • При публикации на сервере возникает исключение DbConcurrency, которое затем обрабатывается (путем обновления контекста).Это снова возвращает страницу редактирования.
  • Теперь при публикации все в порядке.

Это поведение невозможно воспроизвести ни в одном другом браузере, включая Apple.У меня даже был программный сброс моего телефона вчера при публикации!

1 Ответ

0 голосов
/ 31 августа 2011
  • Я обновляю некоторые данные на мобильном устройстве IE на странице Edit.cshtml.
  • После публикации движок отправляет обратно файл Details.cshtml, который показывает, что данные НЕ были обновлены
  • Однако, когда я проверяю с помощью другого браузера, данные были обновлены.

Для меня это больше похоже на проблему кэширования в браузере на мобильном устройстве.

Как вы делаете свое сообщение, через AJAX или просто с помощью <input type="submit".. />

Хммм

При публикации на сервере возникает исключение DbConcurrency, котороезатем обрабатывается (обновляя контекст).Это возвращает страницу редактирования еще раз.

Означает ли это, что ваш контекст все еще жив из предыдущего поста назад?

Нашел это на MSDN

Исключение, создаваемое DbContext, когда ожидаемое поведение заключается в том, что SaveChanges для объекта приведет к обновлению базы данных, но на самом деле ни одна строка в базе данных не была затронута.Обычно это указывает на то, что база данных была одновременно обновлена ​​и токен параллелизма, который, как ожидали, совпадал, фактически не совпадал.Записи состояния, на которые ссылается это исключение, не сериализуются из-за безопасности, и доступ к записям состояния после сериализации вернет ноль.

Что может быть истолковано как то, что второе опубликованное сообщение на самом деле не выполняет обновление,или моя интерпретация неверна?

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

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