5

我已经在 1.0.1.0 和 1.0.4.0 中下载了 recaptcha.dll。尝试呈现控件时,出现以下异常:

安全异常描述:应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请联系您的系统管理员或在配置文件中更改应用程序的信任级别。

异常详细信息:System.Security.SecurityException:请求“System.Web.AspNetHostingPermission,System,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”类型的权限失败。

堆栈跟踪:[SecurityException:请求类型'System.Web.AspNetHostingPermission,System,Version = 2.0.0.0,Culture = Neutral,PublicKeyToken = b77a5c561934e089'的权限失败。] System.Reflection.Assembly._GetType(字符串名称,布尔值throwOnError, Boolean ignoreCase) +0 System.Web.UI.NamespaceTagNameToTypeMapper.GetControlType(String tagName, IDictionary attribs, Boolean throwOnError) +209

快速谷歌搜索提供的解决方案是使用 caspol.exe 将完全信任添加到 recaptcha.dll 程序集。

C:\%path%\caspol -af C:\inetpub\wwwroot\%path%\bin\recaptcha.dll

此时,我收到以下错误:

错误:此程序集未签名强名称

除了下载源代码并在本地重新编译之外,还有其他方法可以让它工作吗?

4

5 回答 5

3

我遇到了同样的问题,您的解决方案帮助了我。我还必须对 reCAPTCHA ASP.NET 源代码执行以下步骤。

1) 打开 DLL 项目的 AssemblyInfo.cs 文件,添加以下 using 语句。

使用 System.Security;

2) 将以下行添加到 AssembleInfo.cs。

[程序集:AllowPartiallyTrustedCallers()]

3) 重新编译 dll 并重新部署您的项目。应该解决这个错误。

注意:我正在开发的网站使用 1and1.com 作为他们的托管公司。我还必须在代码隐藏中设置 Proxy 属性以避免在 HttpWebRequest 期间出现超时异常。

recaptcha.Proxy = new WebProxy("http://ntproxyus.lxa.perfora.net:3128");

希望这对某人有所帮助,但现在我已经在 1and1.com 上托管的 ASP.NET 站点上启动并运行了 reCAPTCHA。

于 2011-01-19T02:33:09.190 回答
2

我有同样的问题。经过一番摸索后,我意识到我已经从 zip 文件中下载了 recaptcha.dll。因此,我右键单击 dll,转到属性并单击取消阻止按钮。

这为我解决了这个问题。

于 2011-03-30T18:00:14.483 回答
1

我在 hostmysite.com 上的共享托管环境中尝试将 Google 的 reCAPTCHA 部署到我们的生产服务器时遇到了两个不同的安全问题

1)首先,我根本无法显示表单。相反,我会看到一条错误消息,上面写着“该程序集不允许部分受信任的调用者”。通过下载某人从源代码重新编译并添加 [程序集:AllowPartiallyTrustedCallers] 的 DLL 来解决此问题。DLL 下载和更多详细信息在这里: https ://code.google.com/p/recaptcha/issues/detail?id=100

2) 部署该 DLL 后,我能够让 reCAPTCHA 最初显示在表单上,​​但提交表单会导致原始帖子中列出的相同安全错误:

“描述:应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请联系您的系统管理员或在配置文件中更改应用程序的信任级别。”

我向我们的托管支持提交了一张票,他们能够通过以下解释解决该问题:

“它可能在您的计算机上运行,​​因为您将其设置为完全信任环境,而该站点所在的 Web 服务器设置为中等信任。因此它具有一组受限制的受信任 URI。我现在添加了 URI谷歌的 Recaptcha 到受信任的列表,您的表单现在正在网站上工作。如果您有任何其他问题,请告诉我们。

于 2013-10-25T16:19:56.643 回答
0

在 IIS 中转到Application Pool,进入您的项目,右键单击并选择Advanced Properties并将 LoadUserProfile 设置为 True。

于 2012-02-10T20:26:24.603 回答
0

由于无法使用可供下载的未签名 dll 使其工作,我掌握了源代码,自己编译并签名,这工作正常。

如果在路上的某个地方有什么东西表明我可能不得不这样做,那就太好了……

于 2010-11-11T13:39:13.720 回答