Эта ситуация также может произойти, если вы используете , не поддерживаемые типами EntityFramework , например unsigned int.
Это был мой случай такой ошибки.
Оформить дополнительную информацию о поддерживаемых типах: https://msdn.microsoft.com/en-us/library/ee382832 (v = vs.100) .aspx
Существует некоторое обходное решение для таких ситуаций, объясняемое GFoley83: Как использовать unsigned int / long типы с Entity Framework?
Похоже, это ошибка в Internet Explorer (протестировано с 7 и 8).
Изменение window.location.hash не должно приводить к перезагрузке, и распространенным методом JavaScript является использование хеша для поддержания состояния.
Если вы вручную загрузите страницу и измените хеш с помощью JavaScript, она будет работать.
Проблема в том, что когда вы перенаправлены на страницу из другого места (т. Е. Используете HTTP-заголовок «Location»), изменение хеша приведет к перезагрузке.
Чтобы обойти эту ошибку, вы можете:
1) Если вы можете контролировать перенаправление, вы можете заменить заголовок Location некоторым HTML.
<html>
<head>
<meta http-equiv="refresh" content="0; url=__REDIRECT_LOCATION__">
<script>window.location = "__REDIRECT_LOCATION__";</script>
</head>
</html>
2) если нет, вы можете попробовать перезагрузить страницу, когда она загружена. Чтобы предотвратить повторную загрузку, вам может потребоваться установить cookie.
window.location = window.location; // window.location.reload() didn't work.
In pseudo code:
// if is Internet Explorer
// if ( cookie "reloadPerformed" is not set )
// set cookie "reloadPerformed" = "1"
// reload page
// else
// clear cookie "reloadPerformed"
Очевидным недостатком является то, что загрузка страницы приводит к двухстраничному запросу & amp; рендер, так что вы бы хотели, чтобы перезагрузка была одной из первых вещей, которую страница делает при загрузке.
У нас была та же проблема.
В нашем случае это был http-адрес, который был перенаправлен Apache на https. Поскольку строка после знака хеша никогда не передается на сервер, она теряется.
Мне кажется, что если вы измените хеш, вы в основном измените местоположение страницы, и поэтому IE (или любой браузер) перезагрузится. Как вы пытаетесь это сделать? window.location.hash = "";
Может быть, Firefox достаточно умен, чтобы видеть, что вы делаете, и избегать обновления.
Проблема в том, что "Хэш приходит из другого места в веб-приложении через редирект. ". Если вы используете javascript для перенаправления url в клиенте вот так:
location.href = 'test1.aspx#testhash'
то все будет нормально!
Так что это ошибка IE: Когда веб-приложение работает через редирект, браузер может видеть только предыдущий url, поэтому когда вы изменяете location.hash
, браузер видит изменение url, поэтому обновляет страницу.
Если вы используете javascript для установки хэша, не используйте "#"
window.location.hash = '#foo'; //IE will reload the page
window.location.hash = 'foo'; //IE will set the hash but will not reload the page