+2009-08-11 Atsushi Enomoto <atsushi@ximian.com>
+
+ * ServiceDebugBehavior.cs, ServiceMetadataBehavior.cs :
+ add Binding properties. Properties are now auto.
+ * ServiceMetadataExtension.cs : take Binding too to build dispatcher.
+
2009-08-10 Atsushi Enomoto <atsushi@ximian.com>
* ServiceContractGenerator.cs : removed ChannelBase proxy stuff,
{
public class ServiceDebugBehavior : IServiceBehavior
{
- bool inc_details;
- bool http_help_enabled = true;
- bool https_help_enabled = true;
- Uri http_help_url, https_help_url;
-
public ServiceDebugBehavior ()
{
}
- public bool IncludeExceptionDetailInFaults {
- get { return inc_details; }
- set { inc_details = value; }
- }
+ public bool IncludeExceptionDetailInFaults { get; set; }
- public bool HttpHelpPageEnabled {
- get { return http_help_enabled; }
- set { http_help_enabled = value; }
- }
+ public bool HttpHelpPageEnabled { get; set; }
- public Uri HttpHelpPageUrl {
- get { return http_help_url; }
- set { http_help_url = value; }
- }
+ public Uri HttpHelpPageUrl { get; set; }
- public bool HttpsHelpPageEnabled {
- get { return https_help_enabled; }
- set { https_help_enabled = value; }
- }
+ public bool HttpsHelpPageEnabled { get; set; }
- public Uri HttpsHelpPageUrl {
- get { return https_help_url; }
- set { https_help_url = value; }
- }
+ public Uri HttpsHelpPageUrl { get; set; }
+
+ public Binding HttpHelpPageBinding { get; set; }
+
+ public Binding HttpsHelpPageBinding { get; set; }
void IServiceBehavior.AddBindingParameters (
ServiceDescription description,
if (HttpHelpPageEnabled) {
Uri uri = serviceHostBase.CreateUri ("http", HttpHelpPageUrl);
if (uri != null)
- ServiceMetadataExtension.EnsureServiceMetadataHttpChanelDispatcher (description, serviceHostBase, sme, uri);
+ ServiceMetadataExtension.EnsureServiceMetadataHttpChanelDispatcher (description, serviceHostBase, sme, uri, HttpHelpPageBinding);
}
if (HttpsHelpPageEnabled) {
Uri uri = serviceHostBase.CreateUri ("https", HttpsHelpPageUrl);
if (uri != null)
- ServiceMetadataExtension.EnsureServiceMetadataHttpsChanelDispatcher (description, serviceHostBase, sme, uri);
+ ServiceMetadataExtension.EnsureServiceMetadataHttpsChanelDispatcher (description, serviceHostBase, sme, uri, HttpsHelpPageBinding);
}
}
{
public const string MexContractName = "IMetadataExchange";
- bool enable_http, enable_https;
- Uri http_url, https_url, location;
MetadataExporter exporter;
public ServiceMetadataBehavior ()
{
}
- public bool HttpGetEnabled {
- get { return enable_http; }
- set { enable_http = value; }
- }
+ public bool HttpGetEnabled { get; set; }
- public bool HttpsGetEnabled {
- get { return enable_https; }
- set { enable_https = value; }
- }
+ public bool HttpsGetEnabled { get; set; }
public MetadataExporter MetadataExporter {
get { return exporter ?? (exporter = new WsdlExporter ()); }
set { exporter = value; }
}
- public Uri ExternalMetadataLocation {
- get { return location; }
- set { location = value; }
- }
+ public Uri ExternalMetadataLocation { get; set; }
- public Uri HttpGetUrl {
- get { return http_url; }
- set { http_url = value; }
- }
+ public Uri HttpGetUrl { get; set; }
- public Uri HttpsGetUrl {
- get { return https_url; }
- set { https_url = value; }
- }
+ public Uri HttpsGetUrl { get; set; }
+
+ public Binding HttpGetBinding { get; set; }
+
+ public Binding HttpsGetBinding { get; set; }
- [MonoTODO]
void IServiceBehavior.AddBindingParameters (
ServiceDescription description,
ServiceHostBase serviceHostBase,
if (HttpGetEnabled) {
Uri uri = serviceHostBase.CreateUri ("http", HttpGetUrl);
if (uri != null)
- ServiceMetadataExtension.EnsureServiceMetadataHttpChanelDispatcher (description, serviceHostBase, sme, uri);
+ ServiceMetadataExtension.EnsureServiceMetadataHttpChanelDispatcher (description, serviceHostBase, sme, uri, HttpGetBinding);
}
if (HttpsGetEnabled) {
Uri uri = serviceHostBase.CreateUri ("https", HttpsGetUrl);
if (uri != null)
- ServiceMetadataExtension.EnsureServiceMetadataHttpsChanelDispatcher (description, serviceHostBase, sme, uri);
+ ServiceMetadataExtension.EnsureServiceMetadataHttpsChanelDispatcher (description, serviceHostBase, sme, uri, HttpsGetBinding);
}
}
using WSServiceDescription = System.Web.Services.Description.ServiceDescription;
using WSMessage = System.Web.Services.Description.Message;
using SMMessage = System.ServiceModel.Channels.Message;
-
+using WCFBinding = System.ServiceModel.Channels.Binding;
namespace System.ServiceModel.Description
{
return sme;
}
- internal static void EnsureServiceMetadataHttpChanelDispatcher (ServiceDescription description, ServiceHostBase serviceHostBase, ServiceMetadataExtension sme, Uri uri) {
+ internal static void EnsureServiceMetadataHttpChanelDispatcher (ServiceDescription description, ServiceHostBase serviceHostBase, ServiceMetadataExtension sme, Uri uri, WCFBinding binding)
+ {
+ EnsureServiceMetadataDispatcher (description, serviceHostBase, sme, uri, binding ?? MetadataExchangeBindings.CreateMexHttpBinding ());
+ }
+
+ internal static void EnsureServiceMetadataHttpsChanelDispatcher (ServiceDescription description, ServiceHostBase serviceHostBase, ServiceMetadataExtension sme, Uri uri, WCFBinding binding)
+ {
+ // same as http now.
+ EnsureServiceMetadataDispatcher (description, serviceHostBase, sme, uri, binding ?? MetadataExchangeBindings.CreateMexHttpsBinding ());
+ }
+ static void EnsureServiceMetadataDispatcher (ServiceDescription description, ServiceHostBase serviceHostBase, ServiceMetadataExtension sme, Uri uri, WCFBinding binding)
+ {
if (sme._serviceMetadataChanelDispatchers == null)
sme._serviceMetadataChanelDispatchers = new Dictionary<Uri, ChannelDispatcherBase> ();
else if (sme._serviceMetadataChanelDispatchers.ContainsKey (uri))
return;
- CustomBinding cb = new CustomBinding (new BasicHttpBinding ())
+ CustomBinding cb = new CustomBinding (binding)
{
Name = ServiceMetadataBehaviorHttpGetBinding,
};
serviceHostBase.ChannelDispatchers.Add (channelDispatcher);
}
- internal static void EnsureServiceMetadataHttpsChanelDispatcher (ServiceDescription description, ServiceHostBase serviceHostBase, ServiceMetadataExtension sme, Uri uri) {
- throw new NotImplementedException ();
- }
-
void IExtension<ServiceHostBase>.Attach (ServiceHostBase owner)
{
this.owner = owner;