繁体   English   中英

从CRM沙盒插件调用WCF(使用生成的客户端)会抛出System.Security.SecurityException

[英]Calling WCF (using generated client) from CRM sandboxed plugin throws System.Security.SecurityException

上下文

我正在使用生成的客户端从CRM插件调用WCF服务。 System.ServiceModel.ClientBase<T> )CRM插件必须在沙箱隔离模式下工作。 WCF客户端是从纯wsdl和xsd生成的。 它似乎正在使用Xml序列化,因此不涉及任何反射。

插件执行抛出:

System.Security.SecurityException:请求类型为'System.Security.Permissions.SecurityPermission的权限,

在堆栈跟踪中,它似乎来自WCF客户端实现的核心:

服务器堆栈跟踪:System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime操作,ProxyRpc和rpc)在System.ServiceModel.Channels.ServiceChannel.Call(String action,Boolean oneway,ProxyOperationRuntime操作,Object [] ins,Object [] out System.SServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage消息)中的System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall,ProxyOperationRuntime操作),TimeSpan超时)

在[0]处重新抛出异常:位于Microsoft.Crm的System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&msgData,Int32类型)的System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)。 Sandbox.ISandboxHost.ExecuteCustomWorkflowActivityAndReturnTraceInfo(SandboxCallInfo callInfo,SandboxCustomActivityExecutionContext requestContext,Guid pluginAssemblyId,Int32 sourceHash,String assemblyName,Guid pluginTypeId,String pluginTypeName,String assemblyContents,Boolean returnTraceInfo)at Microsoft.Crm.Sandbox.SandboxCustomActivity.Execute(SandboxClient客户端,SandboxCallTracker callTracker, IExecutionContext requestContext,String assemblyContents,Boolean returnTraceInfo)at Microsoft.Crm.Sandbox.SandboxCodeUnit.Execute(IExecutionContext context)

声明是否正确我们不能在沙箱隔离模式和CRM Online中使用WCF客户端? (或者我错过了什么......?)

如果是这样,解决方法是什么? 我们是否必须重新实现所有消息呈现和解析?

您可以在visual studio中生成的标准“服务引用”(或旧的Web引用)不会在沙盒模式下工作。 它使用Microsoft序列化程序(来自System.Runtime.Serialization),默认情况下,沙箱中不支持任何未在GAC中注册的类。

http://www.instantquick.com/index.php/serialization-in-sandbox-solutions?c=elumenotion-blog-archive/random-whatnot

据我所知,没有快速解决方案。 该链接提供了2种可能的替代解决方案,但两种解决方案都不能直接与服

您的WCF服务是否使用HTTPS托管? 这对于CRM Online中的沙盒插件是必需的。 也不能使用IP地址。 您必须使用需要DNS名称解析的命名Web地址

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM