Hello Devs,
Is there any way to call a WCF service, exposed to a Azure Service Bus Relay, directly in a sandboxed plugin code? That is without using provided Service Endpoint entity. Basically, I don't want to pass over full data context (IPluginExecutionContext) to
the WCF service that is not CRM aware.
I googled for calling a WCF service in a sandboxed plugin and found that it is possible. However, when I am trying to access a service bus relay hosted service, it is ending up with error:
The type initializer for 'Microsoft.ServiceBus.RelayEnvironment' threw an exception
with an inner exception message:
Request for the permission of type 'System.Security.Permissions.EnvironmentPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed
Below is my sample plugin code:
string serviceNamespace = "myNameSpace"; string issuerName = "RootManageSharedAccessKey"; string issuerKey = "myKey"; string servicePath = "Student/GetInfo"; var cf = new ChannelFactory<IStudentInfo>( new WS2007HttpRelayBinding(), new EndpointAddress(ServiceBusEnvironment.CreateServiceUri(Uri.UriSchemeHttps, serviceNamespace, servicePath))); cf.Endpoint.Behaviors.Add(new TransportClientEndpointBehavior { TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(issuerName, issuerKey) //TokenProvider = TokenProvider.CreateSharedSecretTokenProvider(issuerName, issuerKey) }); var ch = cf.CreateChannel();
I am using CRM Online for this testing purpose.
blog: <a href="http://technologynotesforyou.wordpress.com">http://technologynotesforyou.wordpress.com</a> | skype: ali.net.pk