diff options
author | Aleksey Kliger <aleksey@xamarin.com> | 2015-12-21 23:51:57 +0300 |
---|---|---|
committer | Aleksey Kliger <aleksey@xamarin.com> | 2015-12-22 01:33:11 +0300 |
commit | f92547dc16e17e05ce0b89be3119bedc9e43828c (patch) | |
tree | 83fc26ece1951c0f2abbfa134f930e100c5caa66 /mcs | |
parent | aaca175b4467ce44dcb8fd5260099148eb4e7284 (diff) |
[WCF] ServiceHost should look for inherited ServiceBehaviorAttribute
Fixes #37035
Diffstat (limited to 'mcs')
-rw-r--r-- | mcs/class/System.ServiceModel/System.ServiceModel/ServiceHost.cs | 2 | ||||
-rw-r--r-- | mcs/class/System.ServiceModel/Test/System.ServiceModel/ServiceHostTest.cs | 32 |
2 files changed, 32 insertions, 2 deletions
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel/ServiceHost.cs b/mcs/class/System.ServiceModel/System.ServiceModel/ServiceHost.cs index 2fed9fb3cdb..e438c8f5b71 100644 --- a/mcs/class/System.ServiceModel/System.ServiceModel/ServiceHost.cs +++ b/mcs/class/System.ServiceModel/System.ServiceModel/ServiceHost.cs @@ -151,7 +151,7 @@ namespace System.ServiceModel TAttr PopulateAttribute<TAttr> () { - object [] atts = service_type.GetCustomAttributes (typeof (TAttr), false); + object [] atts = service_type.GetCustomAttributes (typeof (TAttr), true); return (TAttr) (atts.Length > 0 ? atts [0] : Activator.CreateInstance (typeof (TAttr))); } diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel/ServiceHostTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel/ServiceHostTest.cs index a120402ff7c..c93c7953d49 100644 --- a/mcs/class/System.ServiceModel/Test/System.ServiceModel/ServiceHostTest.cs +++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel/ServiceHostTest.cs @@ -353,6 +353,29 @@ namespace MonoTests.System.ServiceModel } } + [Test] + public void InstanceWithSingletonMode_InheritServiceBehavior () + { + // # 37035 + + var ep = NetworkHelpers.LocalEphemeralEndPoint ().ToString (); + + ChildSingletonService instance = new ChildSingletonService (); + ServiceHost host = new ServiceHost (instance); + + host.AddServiceEndpoint (typeof (SingletonService), + new BasicHttpBinding (), + new Uri ("http://" + ep + "/s3")); + + try { + host.Open (); + } catch (InvalidOperationException ex) { + Assert.Fail ("InstanceContextMode was not inherited from parent, exception was: {0}", ex); + } finally { + host.Close (); + } + } + [ServiceContract] interface IBar { @@ -446,7 +469,14 @@ namespace MonoTests.System.ServiceModel public class SingletonService { [OperationContract] - public void Process (string input) + public virtual void Process (string input) + { + } + } + + public class ChildSingletonService : SingletonService + { + public override void Process (string input) { } } |