共用方式為


範例:從沙箱化外掛程式存取 Web

 

發行︰ 2016年11月

適用於: Dynamics CRM 2015

需求

這個範例程式碼適用於 Microsoft Dynamics CRM 2015 和 Microsoft Dynamics CRM Online 2015 更新。下載 Microsoft Dynamics CRM SDK 套件。 可以在下列位置的下載套件中找到:

SDK\SampleCode\CS\Plugins\WebClientPlugin.cs

註冊編譯的外掛程式,以便在 Microsoft Dynamics 365 伺服器的沙箱中執行。

示範

示範如何撰寫可存取 Web (網路) 並且在沙箱中註冊之外掛程式的程式碼。

範例


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 plug-in 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 = "https://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 occurred while attempting to issue the request. {0}: {1}", 
                        exception.Message, str), exception);
                }
            }
            catch (Exception e)
            {
                tracingService.Trace("Exception: {0}", e.ToString());
                throw;
            }
        }
    }
}

另請參閱

IPlugin
ITracingService
外掛程式開發
撰寫外掛程式
外掛程式隔離、信任和統計資料

© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權