2010-04-23 Atsushi Enomoto <atsushi@ximian.com>
authorAtsushi Eno <atsushieno@gmail.com>
Fri, 23 Apr 2010 10:28:49 +0000 (10:28 -0000)
committerAtsushi Eno <atsushieno@gmail.com>
Fri, 23 Apr 2010 10:28:49 +0000 (10:28 -0000)
* HttpListenerManager.cs : fixed the issue that mex_info is never
  retrieved from the latest channel listener (which could be other
  listener than the one which was set mex info).

* ServiceMetadataExtension.cs : raise an error if it failed to set
  mex info. (Make it safer.)

svn path=/trunk/mcs/; revision=155991

mcs/class/System.ServiceModel/System.ServiceModel.Channels/ChangeLog
mcs/class/System.ServiceModel/System.ServiceModel.Channels/HttpListenerManager.cs
mcs/class/System.ServiceModel/System.ServiceModel.Configuration/BaseAddressPrefixFilterElement.cs
mcs/class/System.ServiceModel/System.ServiceModel.Description/ChangeLog
mcs/class/System.ServiceModel/System.ServiceModel.Description/ServiceMetadataExtension.cs

index 85719547a9f75c8c02b97fd0181585f9d5255440..db7b6625f1856eaf04ef9f226cbc695a358ad44c 100755 (executable)
@@ -1,3 +1,9 @@
+2010-04-23  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * HttpListenerManager.cs : fixed the issue that mex_info is never
+         retrieved from the latest channel listener (which could be other
+         listener than the one which was set mex info).
+
 2010-04-23  Atsushi Enomoto  <atsushi@ximian.com>
 
        * HttpChannelListener.cs, HttpListenerManager.cs :
index 41d83e2ada2949d6014575f18dea6fe643981a27..927ed06c85e1697e8876b41f367e4fa1e8ac04b9 100644 (file)
@@ -268,8 +268,7 @@ namespace System.ServiceModel.Channels
                {
                        this.Dispatcher = dispatcher;
                        this.channel_listener = channelListener;
-                       // FIXME: this cast should not be required, but current JIT somehow causes an internal error.
-                       mex_info = ((IChannelListener) channelListener).GetProperty<MetadataPublishingInfo> ();
+                       mex_info = Dispatcher.Listener.GetProperty<MetadataPublishingInfo> ();
                        wsdl_instance = mex_info != null ? mex_info.Instance : null;
                        Source = source;
 
index e5f3dd4ef0d769c6a8f41e829888ac0293eaeef5..5bf6098f09fbb6709d5bf7b2242c50715c43df88 100644 (file)
@@ -75,6 +75,11 @@ namespace System.ServiceModel.Configuration
                {
                }
 
+               public BaseAddressPrefixFilterElement (Uri prefix)
+               {
+                       Prefix = prefix;
+               }
+
 
                // Properties
 
@@ -82,9 +87,6 @@ namespace System.ServiceModel.Configuration
                         Options = ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsKey,
                        IsRequired = true,
                        IsKey = true)]
-               [StringValidator ( MinLength = 1,
-                       MaxLength = int.MaxValue,
-                        InvalidCharacters = null)]
                public Uri Prefix {
                        get { return (Uri) base [prefix]; }
                        set { base [prefix] = value; }
index 349627d0d9f294bc18bc2159ad8775305366e4d3..4a6055fbf60f74e952dafc95bf8b7037594bfef0 100644 (file)
@@ -1,3 +1,8 @@
+2010-04-23  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * ServiceMetadataExtension.cs : raise an error if it failed to set
+         mex info. (Make it safer.)
+
 2010-04-23  Atsushi Enomoto  <atsushi@ximian.com>
 
        * ServiceMetadataExtension.cs : reflect DispatcherBuilder change.
index 686f1ad89e723c5dd9e23401ba6a4dfced43bac9..fb39b485dfa63d8a2a8565c600c54a988c736bcb 100644 (file)
@@ -139,6 +139,8 @@ namespace System.ServiceModel.Description
                        var listener = channelDispatcher.Listener as ChannelListenerBase;
                        if (listener != null)
                                listener.Properties.Add (new MetadataPublishingInfo () { SupportsMex = isMex, SupportsHelp = !isMex, Instance = instance });
+                       else
+                               throw new InvalidOperationException ("FIXME: attempt to use ServiceMetadataExtension to not-supported channel listener: " + listener.GetType ());
                        channelDispatcher.Endpoints [0].DispatchRuntime.InstanceContextProvider = new SingletonInstanceContextProvider (new InstanceContext (owner, instance));
 
                        dispatchers.Add (uri, channelDispatcher);