EtwTrackingBehavior.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.ServiceModel.Activities / System / ServiceModel / Activities / Description / EtwTrackingBehavior.cs / 1305376 / EtwTrackingBehavior.cs

                            //---------------------------------------------------------------- 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//---------------------------------------------------------------

namespace System.ServiceModel.Activities.Description 
{
    using System.Activities.Tracking; 
    using System.Collections.ObjectModel; 
    using System.Globalization;
    using System.Runtime; 
    using System.ServiceModel.Activation;
    using System.ServiceModel.Activities.Tracking;
    using System.ServiceModel.Channels;
    using System.ServiceModel.Description; 

    [Fx.Tag.XamlVisible(false)] 
    public class EtwTrackingBehavior : IServiceBehavior 
    {
        public EtwTrackingBehavior() 
        {
        }

        public string ProfileName 
        {
            get; 
            set; 
        }
 
        public virtual void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, Collection endpoints, BindingParameterCollection bindingParameters)
        {
        }
 
        public virtual void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
        { 
            WorkflowServiceHost workflowServiceHost = serviceHostBase as WorkflowServiceHost; 
            if (null != workflowServiceHost)
            { 
                string workflowDisplayName = workflowServiceHost.Activity.DisplayName;
                string hostReference = string.Empty;

                if (AspNetEnvironment.Enabled) 
                {
                    VirtualPathExtension virtualPathExtension = serviceHostBase.Extensions.Find(); 
                    if (virtualPathExtension != null && virtualPathExtension.VirtualPath != null) 
                    {
                        //Format Website name\Application Virtual Path|\relative service virtual path|serviceName 
                        string name = serviceDescription != null ? serviceDescription.Name : string.Empty;
                        string application = virtualPathExtension.ApplicationVirtualPath;

                        //If the application is the root, do not include it in servicePath 
                        string servicePath = virtualPathExtension.VirtualPath.Replace("~", application + "|");
                        hostReference = string.Format(CultureInfo.InvariantCulture, "{0}{1}|{2}", virtualPathExtension.SiteName, servicePath, name); 
                    } 
                }
 
                TrackingProfile trackingProfile = this.GetProfile(this.ProfileName, workflowDisplayName);
                workflowServiceHost.WorkflowExtensions.Add(
                    () => new EtwTrackingParticipant
                    { 
                        ApplicationReference = hostReference,
                        TrackingProfile = trackingProfile 
                    }); 
            }
        } 

        public virtual void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
        {
        } 

        TrackingProfile GetProfile(string profileName, string displayName) 
        { 
            DefaultProfileManager profileManager = new DefaultProfileManager();
            return profileManager.GetProfile(profileName, displayName); 
        }
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK