我试图在沙盒环境中的Dynamics CRM插件中使用客户端证书调用Web API端点(https),并且收到以下错误消息。
Unhandled Exception:
System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: Unexpected exception from plug-in (Execute): MyTestPlugin.PatchOnRevise: System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.KeyContainerPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.Detail:
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">
<ActivityId>9eb9f246-31da-42d4-a8ad-a93b16c783d7</ActivityId>
<ErrorCode>-2147220956</ErrorCode>
<ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
<Message>Unexpected exception from plug-in (Execute): MyTestPlugin.PatchOnRevise: System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.KeyContainerPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.</Message>
<Timestamp>2018-07-08T22:01:17.969528Z</Timestamp>
<ExceptionRetriable>false</ExceptionRetriable>
<ExceptionSource i:nil="true" />
<InnerFault i:nil="true" />
<OriginalException i:nil="true" />
<TraceText>
这是我将证书附加到WebClient的代码。
protected override WebRequest GetWebRequest(Uri _address)
{
X509Certificate2 x509Certificate2 = new X509Certificate2(_bytes);
HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(_address);
request.ClientCertificates.Add(x509Certificate2);
return request;
}
我试图禁用沙盒,但没有运气。我还需要采取其他措施来解决此问题。
答案 0 :(得分:1)
您不能在在线环境中禁用沙箱。
我怀疑此问题与此有关,我不确定是否支持基于证书的安全性。
Plug-in isolation, trusts, and statistics
网络访问
沙盒化插件和自定义工作流程活动可以访问 通过HTTP和HTTPS协议的网络。此功能提供 支持访问流行的Web资源,例如社交网站,新闻 提要,Web服务等。以下网络访问限制 应用于此沙盒功能。
仅允许使用HTTP和HTTPS协议。
不允许访问本地主机(环回)。
不能使用IP地址。您必须使用需要DNS名称解析的命名网址。
支持并建议使用匿名身份验证。没有规定提示登录的用户输入凭据或 保存这些凭据。