验证码图像未呈现为营销人员的 sitecore 网络表单

Captcha image is not rendering in sitecore web form for marketers

我正在使用“Web Forms for Marketers 2.5 rev. 141014”,而正在创建一个表单我正在参加验证码字段,但验证码图像未在前端呈现

Screenshot Link

我做错了什么??

如果您使用的是 MVC,则 Microsoft Captcha 控件可能存在问题。 Sitecore 发布了一个修补程序,您可以通过 http://support.sitecore.net

联系支持人员获取该修补程序

http://sdn.sitecore.net/Products/Web%20Forms%20for%20Marketers/Web%20Forms%20for%20Marketers%202,-d-,5/Release%20Notes.aspx

您是否按照 post 安装步骤中的要求修改了 Web.config?

  1. Add the following nodes to the Web.config:
    • for IIS 6.x under the configuration\system.web\httpHandlers node
    • for IIS 7.x and up under the configuration\system.webServer\handlers node

如果你这样做了,你会同时使用 WFFM 和 WeBlog 模块吗?

问题是 WeBlog 使用 preprocessRequest sitecore 管道来解析 CaptchaImage。此管道没有准备会话,因此 WFFM 验证码(默认情况下将数据存储在会话中)在这样的设置中将不起作用。

解决方案只是删除

<preprocessRequest>
  <processor patch:before="*[1]" type="Sitecore.Modules.WeBlog.Pipelines.CaptchaProcessor,Sitecore.Modules.WeBlog"/>
</preprocessRequest>

来自 WeBlog.config 文件。

发现 Jonathan Robbins 的这篇文章 Web Forms for Marketers Captcha not displaying 解决了我的问题

事实证明,在安装或更新此版本的 Web Forms 时,web.config 需要添加额外的配置。

如果您的网站是 运行 II7 并且管理管道模式设置为集成,您将需要在 web.config [=21] 中以下位置的底部添加这些配置节点=].webServer/handers

<add name="CaptchaImage" verb="*" path="CaptchaImage.axd" type="Sitecore.Form.Core.Pipeline.RequestProcessor.CaptchaResolver, Sitecore.Forms.Core" />
<add name="CaptchaAudio" verb="*" path="CaptchaAudio.axd" type="Sitecore.Form.Core.Pipeline.RequestProcessor.CaptchaResolver, Sitecore.Forms.Core" />

如果您的站点是 运行 在 IIS6 上,或者您的应用程序池的托管管道是经典的,则需要将这两个节点添加到 web.config configuration/system 中的以下路径。 webServer/httpHanders

<add name="CaptchaImage" verb="*" path="CaptchaImage.axd" type="Sitecore.Form.Core.Pipeline.RequestProcessor.CaptchaResolver, Sitecore.Forms.Core" />
<add name="CaptchaAudio" verb="*" path="CaptchaAudio.axd" type="Sitecore.Form.Core.Pipeline.RequestProcessor.CaptchaResolver, Sitecore.Forms.Core" />

感谢您的建议,但问题出在dll冲突上。当我第一次安装 WFFM 模块(其中包含 Captcha dll)然后安装 WeBlog 模块(其中也包含 Captcha dll)时,dll 被覆盖了。所以尝试 assembly redirect 解决了这个问题。再次感谢您的贡献。