尝试呈现reCaptcha控件时出现.Net Security异常

时间:2010-10-29 08:56:34

标签: asp.net .net-3.5 recaptcha caspol

我已经在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(String name,Boolean 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

此时,我收到以下错误:

  

错误:此程序集不是强名称

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

5 个答案:

答案 0 :(得分:3)

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

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

使用System.Security;

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

[assembly:AllowPartiallyTrustedCallers()]

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

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

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

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

答案 1 :(得分:2)

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

这解决了我的问题。

答案 2 :(得分:1)

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

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

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

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

我向我们的托管支持提交了一张票,他们能够解决这个问题,并提供了以下解释:

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

答案 3 :(得分:0)

无法使用可供下载的无符号dll使其工作,我掌握了源代码,自行编译和签名,这样可以正常工作。

如果在某个地方的某些地方表明我可能不得不这样做,那就太好了......

答案 4 :(得分:0)

在IIS中转到应用程序池,进入您的项目,右键单击并选择高级属性并将LoadUserProfile设置为True。