1 out of 1 rated this helpful - Rate this topic

Sample: Web Access from a Sandboxed Plug-In

[Applies to: Microsoft Dynamics CRM 2011 and Microsoft Dynamics CRM Online]

Requirements

This sample code is for Microsoft Dynamics CRM 2011 and Microsoft Dynamics CRM Online, 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


Imports System.Globalization
Imports System.IO
Imports System.Text
Imports System.Net

' Microsoft Dynamics CRM namespace(s)
Imports 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 NotInheritable Class WebClientPlugin
        Implements IPlugin

        Private webAddress As String

        ''' <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 Sub New(ByVal config As String)

            If String.IsNullOrEmpty(config) Then

                webAddress = "http://www.bing.com"

            Else

                webAddress = config

            End If

        End Sub

        ''' <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 Sub Execute(ByVal serviceProvider As IServiceProvider) _
            Implements IPlugin.Execute

            'Extract the tracing service for use in plug-in debugging.
            Dim tracingService As ITracingService =
                CType(serviceProvider.GetService(GetType(ITracingService)), 
                    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 client As New WebClient()

                        Dim responseBytes() As Byte = client.DownloadData(webAddress)
                        Dim response As String = 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.")

                    End Using


                Catch exception As WebException

                    Dim str As String = String.Empty
                    If exception.Response IsNot Nothing Then

                        Using reader As New StreamReader(exception.Response.GetResponseStream())

                            str = reader.ReadToEnd()

                        End Using
                        exception.Response.Close()

                    End If
                    If exception.Status.Equals(WebExceptionStatus.Timeout) Then

                        Throw New InvalidPluginExecutionException("The timeout elapsed while attempting to issue the request.", exception)

                    End If
                    Throw New InvalidPluginExecutionException(String.Format(CultureInfo.InvariantCulture, "A Web exception ocurred while attempting to issue the request. {0}: {1}", exception.Message, str), exception)

                End Try

            Catch e As Exception

                tracingService.Trace("Exception: {0}", e.ToString())
                Throw

            End Try

        End Sub
    End Class

End Namespace

See Also

Microsoft Dynamics CRM 2011 and Microsoft Dynamics CRM Online
Send comments about this topic to Microsoft.
© 2012 Microsoft Corporation. All rights reserved.
Did you find this helpful?
(1500 characters remaining)

Community Additions

ADD
© 2013 Microsoft. All rights reserved.