public override void AddHostingBehavior(ServiceHostBase serviceHost, System.ServiceModel.Description.ServiceDescription description)
        {
            VirtualPathExtension virtualPathExtension = serviceHost.Extensions.Find <VirtualPathExtension>();

            if (virtualPathExtension != null)
            {
                description.Behaviors.Add(new HostedBindingBehavior(virtualPathExtension));
            }
        }
Example #2
0
        public override void ApplyHostedContext(TransportChannelListener listener, BindingContext context)
        {
            VirtualPathExtension virtualPathExtension = context.BindingParameters.Find <VirtualPathExtension>();

            if (virtualPathExtension != null)
            {
                HostedMetadataBindingParameter metadataBindingParameter = context.BindingParameters.Find <HostedMetadataBindingParameter>();
                listener.ApplyHostedContext(virtualPathExtension.VirtualPath, metadataBindingParameter != null);
            }
        }
Example #3
0
        public override void AddHostingBehavior(ServiceHostBase serviceHost, ServiceDescription description)
        {
            VirtualPathExtension virtualPathExtension = serviceHost.Extensions.Find <VirtualPathExtension>();

            if (virtualPathExtension != null)
            {
                description.Behaviors.Add(new HostedBindingBehavior(virtualPathExtension));
            }

            foreach (ServiceEndpoint endpoint in description.Endpoints)
            {
                if (ServiceMetadataBehavior.IsMetadataEndpoint(description, endpoint))
                {
                    endpoint.Behaviors.Add(new HostedMetadataExchangeEndpointBehavior());
                }
            }
        }
 public override string GetAnnotationFromHost(ServiceHostBase host)
 {
     if ((host != null) && (host.Extensions != null))
     {
         string str = (host.Description != null) ? host.Description.Name : string.Empty;
         string applicationVirtualPath = ServiceHostingEnvironment.ApplicationVirtualPath;
         string str3 = string.Empty;
         VirtualPathExtension extension = host.Extensions.Find <VirtualPathExtension>();
         if ((extension != null) && (extension.VirtualPath != null))
         {
             str3 = extension.VirtualPath.Replace("~", applicationVirtualPath + "|");
             return(string.Format(CultureInfo.InvariantCulture, "{0}{1}|{2}", new object[] { ServiceHostingEnvironment.SiteName, str3, str }));
         }
     }
     if (string.IsNullOrEmpty(cachedServiceReference))
     {
         cachedServiceReference = string.Format(CultureInfo.InvariantCulture, "{0}{1}", new object[] { ServiceHostingEnvironment.SiteName, ServiceHostingEnvironment.ApplicationVirtualPath });
     }
     return(cachedServiceReference);
 }
Example #5
0
 public override string GetAnnotationFromHost(ServiceHostBase host)
 {
     //Format Website name\Application Virtual Path|\relative service virtual path|serviceName
     if (host != null && host.Extensions != null)
     {
         string serviceName             = (host.Description != null) ? host.Description.Name : string.Empty;
         string application             = ServiceHostingEnvironment.ApplicationVirtualPath;
         string servicePath             = string.Empty;
         VirtualPathExtension extension = host.Extensions.Find <VirtualPathExtension>();
         if (extension != null && extension.VirtualPath != null)
         {
             servicePath = extension.VirtualPath.Replace("~", application + "|");
             return(string.Format(CultureInfo.InvariantCulture, "{0}{1}|{2}", ServiceHostingEnvironment.SiteName, servicePath, serviceName));
         }
     }
     if (string.IsNullOrEmpty(HostedAspNetEnvironment.cachedServiceReference))
     {
         HostedAspNetEnvironment.cachedServiceReference = string.Format(CultureInfo.InvariantCulture, "{0}{1}", ServiceHostingEnvironment.SiteName, ServiceHostingEnvironment.ApplicationVirtualPath);
     }
     return(HostedAspNetEnvironment.cachedServiceReference);
 }
Example #6
0
        internal override void AddMetadataBindingParameters(Uri listenUri, KeyedByTypeCollection <IServiceBehavior> serviceBehaviors, BindingParameterCollection bindingParameters)
        {
            if (serviceBehaviors.Find <HostedBindingBehavior>() != null)
            {
                bindingParameters.Add(new HostedMetadataBindingParameter());
            }

            VirtualPathExtension virtualPathExtension = bindingParameters.Find <VirtualPathExtension>();

            if (virtualPathExtension != null)
            {
                AuthenticationSchemes hostSupportedAuthenticationSchemes = AspNetEnvironment.Current.GetAuthenticationSchemes(listenUri);

                if (hostSupportedAuthenticationSchemes != AuthenticationSchemes.None)
                {
                    if (bindingParameters.Find <AuthenticationSchemesBindingParameter>() == null)
                    {
                        bindingParameters.Add(new AuthenticationSchemesBindingParameter(hostSupportedAuthenticationSchemes));
                    }
                }
            }

            base.AddMetadataBindingParameters(listenUri, serviceBehaviors, bindingParameters);
        }
 internal HostedBindingBehavior(VirtualPathExtension virtualPathExtension)
 {
     this.virtualPathExtension = virtualPathExtension;
 }