3

我已将自由文本框与网站集成。

它适用于所有浏览器,除了最近发布的 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)

任何帮助,将不胜感激。

谢谢

4

5 回答 5

4

已确认的解决方案:修复对象引用未设置为对象实例呈现为文本区域的自由文本框问题。

  1. http://freetextbox.com/下载源代码(现在所有人都可以使用源代码)
  2. 打开与您的环境相关的项目文件(例如 FTB3-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 支持。您也可以针对其他浏览器问题对此文件进行更多更改。

于 2015-10-15T09:47:40.187 回答
2

我遇到了同样的问题。FTB 不再处于开发阶段,从 IE 11 的用户代理中删除 MSIE 令牌破坏了 FTB 的功能。由于 FTB 直接读取用户代理,即使在使用 IE 11 .Net修复或 .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>
于 2013-12-18T18:39:14.150 回答
0

我们在我工作的公司也遇到了类似的问题。在我们的例子中,方法抛出了 NullReferenceException SetToolbarDropDownListLanguage(ToolbarDropDownList toolbarDropDownList)

希望我们已经购买了带有组件的代码,以便我们设法检索错误源。

该组件正在基于其用户代理嗅探浏览器功能(这在今天被认为是一个坏主意,但在开发该组件时是标准方法)。

但是默认的 IE11 用户代理与以前的版本确实不同:

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)

看到MSIEUA 中的缺失了吗?或多或少,基于此字符串,FreeTextBox 组件在对象IsRichCapable上设置了一个属性BrowserInfo

如果IsRichCapable设置为 false,则某些对象无法很好地实例化,然后您会开始看到一些空引用异常。

在我们的例子中,由于我们拥有源代码,因此我们设法将IsRichCapable属性修改为始终为真,因为我们知道我们的网站不会被“外来”或“旧”浏览器访问:

public bool IsRichCapable
{
    get { return true; }
}

如果您无法更改代码并且无法替换 FreeTextBox 组件,我认为您最好的解决方案是尝试检测 IE11 User-Agent 并重写它,但我不知道是否可能。

于 2013-12-18T13:15:09.513 回答
-1

在我工作的公司,我们的网站也遇到了同样的问题。正如 Garrison Neely 所提到的,他们的网站说它只支持 IE 9。它确实在 IE 10 上工作。我认为这家公司已经不存在了。

我最终用 Ajax Control Toolkit 中的 HTML 编辑器替换了该控件。HTML 编辑器很容易设置,在我看来它看起来好多了。微软也支持这些控件,他们在这里有很多视频教程:http ://www.asp.net/web-forms/videos/ajax-control-toolkit 。

抱歉,我可以帮助您解决 FreeTextBox 控件的问题,但我建议您选择不同的 HTML 编辑器。

于 2013-12-05T17:35:29.480 回答
-1

我能够重写 url 以将 msie 包含到用户代理中。但它仍然不能在 asp.net 2.0 自由文本框中工作。我必须使用ie 8 兼容模式。如果我设置 x-ua,所有其他控件都可以工作。但是单独的自由文本框被呈现为文本区域。我没有源代码许可证

于 2014-03-08T21:12:41.883 回答