尝试渲染reCaptcha控件时出现了.Net安全异常

5
我已下载了recaptcha.dll的1.0.1.0和1.0.4.0版本。但在尝试渲染控件时,我遇到了以下异常:
安全异常 描述:应用程序尝试执行安全策略不允许的操作。请联系系统管理员以授予此应用程序所需的权限或更改配置文件中的应用程序信任级别。 异常详细信息:System.Security.SecurityException: 请求失败,类型为'System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'的权限。
解决方案是使用caspol.exe为recaptcha.dll程序集添加完全信任,这是通过快速搜索得到的结果。
C:\%path%\caspol -af C:\inetpub\wwwroot\%path%\bin\recaptcha.dll
然而,此时我收到了以下错误提示:
错误:此程序集未经过强名称签名
除了下载源代码并在本地重新编译之外,还有其他方法可以使其正常工作吗?
5个回答

3
我遇到了同样的问题,你的解决方案帮助了我。我还需要对reCAPTCHA ASP.NET源代码执行以下步骤。
1)打开DLL项目的AssemblyInfo.cs文件,并添加以下using语句。 using System.Security;
2)在AssembleInfo.cs中添加以下行。
[assembly: AllowPartiallyTrustedCallers()]
3)重新编译dll并重新部署您的项目。这个错误应该被解决了。
注意:我正在使用1and1.com作为他们的托管公司的网站。我还需要在代码后台设置代理属性,以避免HttpWebRequest期间的超时异常。
recaptcha.Proxy = new WebProxy("http://ntproxyus.lxa.perfora.net:3128");

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


在共享主机上,我们不能使用前面答案中提到的“caspol.exe”工具。我不必修改AssemblyInfo.cs文件。我只是更改了recaptcha的代理URL,在1and1.com共享主机上运行良好。你的解决方案帮了我个大忙。 - Rahatur

2

我曾经遇到过同样的问题。在头疼了一阵子后,我发现我是从一个zip文件中下载了recaptcha.dll。所以,我右键点击dll文件,进入属性,然后点击解除锁定按钮。

这样就解决了我的问题。


1
我在尝试将Google的reCAPTCHA部署到我们托管在hostmysite.com共享主机环境中的生产服务器时遇到了两个不同的安全问题。
1)首先,我无法使表单显示。相反,我会看到一个错误消息,上面写着“该程序集不允许部分信任的调用者”。通过下载一个DLL文件,它是从源代码重新编译的,并添加了 [assembly: AllowPartiallyTrustedCallers],这个问题得以解决。DLL下载和更多详细信息请参见此处: https://code.google.com/p/recaptcha/issues/detail?id=100 2)在部署该DLL之后,我能够在表单上最初显示reCAPTCHA,但提交表单会导致与原帖中列出的相同的安全错误:
“描述:应用程序试图执行安全策略不允许的操作。若要授予此应用程序所需的权限,请联系系统管理员或更改配置文件中应用程序的信任级别。”
我向我们的托管支持提交了一张工单,他们能够解决这个问题,并给出了以下解释:
“可能是因为您的电脑设置了完全信任环境,所以它在您的电脑上运行正常,而网站所在的Web服务器设置为中等信任级别。因此,它只有一组受信任的URI。我已将Google的Recaptcha URI添加到受信任列表中,您的表单现在可以在该网站上正常工作。如果您有任何进一步的问题,请告诉我们。”

0

使用提供的未签名dll无法使其工作,于是我获取了源代码,自己编译并签名,这样就可以正常工作了。

如果在整个过程中有任何提示表明我可能需要这样做,那就太好了...


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接