2013-10-11 7 views
3

У меня есть встроенная свободная коробка с веб-сайтом.IE11 - Ссылка на объект не установлена ​​в экземпляр объекта в FreeTextBox.RenderTabs

Это хорошо работает для всех, кроме браузера недавно релиз IE 11.

Это бросками ошибка «Ссылка на объект не указывает на экземпляр объекта.»

Ниже стек ошибки трассировки:

at FreeTextBoxControls.FreeTextBox.RenderTabs(HtmlTextWriter writer) at 
FreeTextBoxControls.FreeTextBox.RenderRichEditor(HtmlTextWriter writer) at 
FreeTextBoxControls.FreeTextBox.Render(HtmlTextWriter writer) at 
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) at 
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) at 
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) at 
ASP.myaspxpage.__Render__control4(HtmlTextWriter __w, Control parameterContainer) in 
pathtomyaspxpage:line 505 at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, 
ICollection children) at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) at 
System.Web.UI.Control.Render(HtmlTextWriter writer) at 
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) at 
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) at 
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) at 
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at 
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) at 
System.Web.UI.UpdatePanel.RenderChildren(HtmlTextWriter writer) at 
System.Web.UI.UpdatePanel.Render(HtmlTextWriter writer) at 
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) at 
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) at 
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) at 
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at 
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) at 
System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) at 
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) at 
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) at 
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) at 
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at 
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) at 
System.Web.UI.Control.Render(HtmlTextWriter writer) at 
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) at 
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) at 
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) at 
mymasterpage.__Renderform1(HtmlTextWriter __w, Control parameterContainer) in 
pathtomymasterpage:line 87 at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriterwriter, 
ICollection children) at System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter 
writer) at System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) at 
System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output) at 
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) at 
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) at 
System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer) at 
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at 
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) at 
System.Web.UI.Control.Render(HtmlTextWriter writer) at 
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) at 
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) at 
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) at 
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at 
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) at 
System.Web.UI.Page.Render(HtmlTextWriter writer) at 
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) at 
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) at 
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) at 
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean 
includeStagesAfterAsyncPoint) 

Любая помощь будет оценена.

Благодаря

+0

Сайт говорит, что он поддерживает только IE9. –

+0

Файл описаний браузеров, возможно, нуждается в обновлении, чтобы включить персонализацию ie10 и ie11, чтобы показать их как современные браузеры, а не наследие .... или показать их вообще с исключением нулевой ссылки. –

ответ

-1

У нас была такая же проблема для наших веб-сайтов в компании я работаю. Как отметил Garrison Neely, их веб-сайт говорит, что он поддерживает только IE 9. Он работал над IE 10. Я не думаю, что компания существует.

Я закончил тем, что заменил элемент управления Редактором HTML из Ajax Control Toolkit. Редактор HTML был прост в настройке, и, на мой взгляд, он выглядит намного приятнее. Microsoft также поддерживает эти элементы управления, и здесь есть много видеоуроков: http://www.asp.net/web-forms/videos/ajax-control-toolkit.

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

+0

Пробовал этот элемент управления, он работает, но редактор HTML выглядит немного по-другому, и настройка была не такой простой. У нас есть мастер-страницы и для этого нужно заменить весь код ScriptManager и его прокси. –

0

У нас также была аналогичная проблема в компании, в которой я работаю. В нашем случае исключение NullReferenceException было выбрано методом SetToolbarDropDownListLanguage(ToolbarDropDownList toolbarDropDownList).

Надеюсь, мы купили код с компонентом, чтобы нам удалось получить источник ошибки.

Компонент обнюхивает возможности браузера на основе его User Agent (который сегодня считается плохой идеей, но является стандартным подходом, когда компонент был разработан).

Но по умолчанию IE11 User Agent действительно отличается от предыдущей версии:

Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko 

Значение по умолчанию IE10 UA:

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0) 

Смотрите, что отсутствует MSIE в UA? Более или менее, на основе этой строки, компонент FreeTextBox устанавливает свойство IsRichCapable на объект BrowserInfo.

Если для параметра IsRichCapable установлено значение «ложь», некоторые объекты не будут создавать экземпляр, а затем вы начнете видеть некоторые нулевые ссылочные исключения.

В нашем случае, когда мы имеем исходный код нам удалось изменить IsRichCapable свойство быть всегда верно, потому что мы знаем, что наш сайт не будет доступен с «экзотическими» или «старых» браузеров:

public bool IsRichCapable 
{ 
    get { return true; } 
} 

Если вы не можете изменить код, и если вы не можете заменить компонент FreeTextBox, я предполагаю, что лучшим решением является попытка обнаружить User-Agent IE11 и переписать его, но я не знаю, возможное.

2

Я столкнулся с тем же вопросом. FTB больше не разрабатывается, и удаление токена MSIE от пользовательского агента IE 11 нарушает функциональность FTB. Поскольку FTB непосредственно считывает пользовательский агент, это происходит даже на серверах, исправленных с помощью IE 11 .Net fix или .Net 4.5.

Чтобы решить эту проблему, пока мы не найдем жизнеспособную альтернативу для управления FTB, я создал правило перезаписи для обнаружения IE 11 и перезаписывания пользовательского агента. Не забудьте добавить переменную сервера "HTTP_USER_AGENT".

<rewrite> 
<rules> 
<rule name="Change IE 11 User Agent to IE 10" enabled="true"> 
    <match url="(.*)" /> 
    <action type="None" /> 
    <conditions> 
    <add input="{HTTP_USER_AGENT}" pattern=".trident\/[789]" /> 
    </conditions> 
    <serverVariables> 
    <set name="HTTP_USER_AGENT" value="Mozilla/5.0 (compatible; MSIE 11.0; Windows NT 6.2; Trident/7.0)" /> 
    </serverVariables> 
</rule> 
</rules> 
</rewrite> 
+0

В нашем приложении ASP.NET 2 (4-5 лет) FTB бросает ту же ошибку, но это правило перезаписи отлично работает. – ahwm

+0

Пробовал это, но, к сожалению, это не работает в IIS 6, IIS 6 не имеет механизма перезаписи. –

-1

Я смог переписать URL-адрес, чтобы включить msie в пользовательский агент. но все же он не работает с бесплатным текстовым полем asp.net 2.0. Я должен использовать 8-разрядный режим. Все остальные элементы управления работают, если я установил x-ua. Но только поле freetext отображается как текстовая область. У меня нет лицензии на исходный код

3

Подтверждено Решение: Fix объекта не задана ссылка на экземпляр объекта ИЛИ FREETEXT поле оказанной в текстовой области проблем.

  1. Загрузить исходный код из http://freetextbox.com/ (источник теперь доступен для всех)
  2. Открыть файл проекта отношение к среде (например, FTB 3-v2010-NET-3-5)
  3. Редактировать файл /Support/BrowserInfo.cs
  4. Найти эту строку browserInfo.isIE = (userAgent.IndexOf("msie") > -1) и изменить его на browserInfo.isIE = (userAgent.IndexOf("msie") > -1) || (userAgent.IndexOf("trident") > -1);
  5. Удалить подписание сборки (или использовать свой собственный) в AssemblyInfo.cs путем удаления линии [assembly: AssemblyKeyFile("..\\..\\FreeTextBox.snk")] и при необходимости изменить номер версии в соответствии вам нужно.
  6. Хит обобщать и использовать сгенерированный DLL (в папке ../build)

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

+1

Я столкнулся с той же проблемой с IE11. Фиксация источника таким образом отлично работала. –

+1

У меня тоже была эта проблема, и я могу подтвердить, что это сработало отлично. Обновление источника и повторная компиляция потребовали всего несколько минут, никаких ошибок, простой замены DLL, не более IE 11 проблем. – Demig0d