Sample: Web Access from a Sandboxed Plug-In
Dynamics CRM 2011
[Applies to: Microsoft Dynamics CRM 2011]
Requirements
This sample code is for Microsoft Dynamics CRM 2011, and can be found in the following location in the SDK download:
SDK\SampleCode\CS\Plugins\WebClientPlugin.cs
SDK\SampleCode\VB\Plugins\WebClientPlugin.vb
Register the compiled plug-in to run in the sandbox on the Microsoft Dynamics CRM server.
Demonstrates
Demonstrates how to code a plug-in that has Web (network) access and be registered in the sandbox.
Example
using System; using System.Globalization; using System.IO; using System.Text; using System.Net; // Microsoft Dynamics CRM namespace(s) using Microsoft.Xrm.Sdk; namespace Microsoft.Crm.Sdk.Samples { /// <summary> /// A sandboxed plugin that can access network (Web) resources. /// </summary> /// <remarks>Register this plug-in in the sandbox. You can provide an unsecure string /// during registration that specifies the Web address (URI) to access from the plug-in. /// </remarks> public sealed class WebClientPlugin : IPlugin { private string webAddress; /// <summary> /// The plug-in constructor. /// </summary> /// <param name="config">The Web address to access. An empty or null string /// defaults to accessing www.bing.com. The Web address can use the HTTP or /// HTTPS protocol.</param> public WebClientPlugin(string config) { if (String.IsNullOrEmpty(config)) { webAddress = "http://www.bing.com"; } else { webAddress = config; } } /// <summary> /// Main execute method that is required by the IPlugin interface. Uses the WebClient /// .NET class to access the target Web address. /// </summary> /// <param name="serviceProvider">The service provider from which you can obtain the /// tracing service, plug-in execution context, organization service, and more.</param> public void Execute(IServiceProvider serviceProvider) { //Extract the tracing service for use in plug-in debugging. ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); try { tracingService.Trace("Downloading the target URI: " + webAddress); try { // Download the target URI using a Web client. Any .NET class that uses the // HTTP or HTTPS protocols and a DNS lookup should work. using (WebClient client = new WebClient()) { byte[] responseBytes = client.DownloadData(webAddress); string response = Encoding.UTF8.GetString(responseBytes); tracingService.Trace(response); // For demonstration purposes, throw an exception so that the response // is shown in the trace dialog of the Microsoft Dynamics CRM user interface. throw new InvalidPluginExecutionException("WebClientPlugin completed successfully."); } } catch (WebException exception) { string str = string.Empty; if (exception.Response != null) { using (StreamReader reader = new StreamReader(exception.Response.GetResponseStream())) { str = reader.ReadToEnd(); } exception.Response.Close(); } if (exception.Status == WebExceptionStatus.Timeout) { throw new InvalidPluginExecutionException( "The timeout elapsed while attempting to issue the request.", exception); } throw new InvalidPluginExecutionException(String.Format(CultureInfo.InvariantCulture, "A Web exception ocurred while attempting to issue the request. {0}: {1}", exception.Message, str), exception); } } catch (Exception e) { tracingService.Trace("Exception: {0}", e.ToString()); throw; } } } }
See Also
Microsoft Dynamics CRM 2011
Send comments about this topic to Microsoft.
© 2013 Microsoft Corporation. All rights reserved.
Show: