Browse Source

* Conv.asmx.template, Conv.cs.template, client/localhost/ConvDoc*,
server/Conv*: Added tests for unknown headers.
* proxies.net.xml.gz, wsdlfiles.tar.gz: Updated.

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

Lluis Sanchez 21 years ago
parent
commit
fb4719a1c9

+ 6 - 0
mcs/class/System.Web.Services/Test/standalone/ChangeLog

@@ -1,3 +1,9 @@
+2004-07-01  Lluis Sanchez Gual  <[email protected]>
+
+	* Conv.asmx.template, Conv.cs.template, client/localhost/ConvDoc*,
+	  server/Conv*: Added tests for unknown headers.
+	* proxies.net.xml.gz, wsdlfiles.tar.gz: Updated.
+
 2004-07-01  Lluis Sanchez Gual  <[email protected]>
 
 	* WebServiceTest.cs, client/external/BankCodeEJBHomeTest.cs, 

+ 56 - 0
mcs/class/System.Web.Services/Test/standalone/Conv.asmx.template

@@ -6,6 +6,7 @@ $TEMPLATE_WARNING$
 
 using System;
 using System.Collections;
+using System.Xml;
 using System.Xml.Serialization;
 using System.Web.Services;
 using System.Web.Services.Protocols;
@@ -47,6 +48,11 @@ namespace WebServiceTests
 		static Hashtable conversionTable;
 		
 		public UserInfo userInfo;
+		
+		public SoapHeader unknown1;
+		public SoapHeader[] unknown2;
+		public SoapUnknownHeader unknown3;
+		public SoapUnknownHeader[] unknown4;
 
 		static ConverterService ()
 		{
@@ -158,6 +164,56 @@ namespace WebServiceTests
 			d = "iii";
 			return new MyInfo();
 		}
+		
+		[SoapHeaderAttribute ("unknown1")]
+		[WebMethod]
+		public void TestUnknownHeader1 ()
+		{
+			if (unknown1 == null)
+				throw new Exception ("Header is null");
+
+			if (unknown1.Actor != "hi")
+				throw new Exception ("Invalid actor");
+		}
+		
+		[SoapHeaderAttribute ("unknown2")]
+		[WebMethod]
+		public void TestUnknownHeader2 ()
+		{
+			if (unknown2 == null || unknown2.Length != 1)
+				throw new Exception ("Header is null");
+
+			if (unknown2[0].Actor != "hi")
+				throw new Exception ("Invalid actor");
+		}
+		
+		[SoapHeaderAttribute ("unknown3")]
+		[WebMethod]
+		public int TestUnknownHeader3 ()
+		{
+			if (unknown3 == null)
+				throw new Exception ("Header is null");
+
+			if (unknown3.Actor != "hi")
+				throw new Exception ("Invalid actor");
+				
+			XmlElement child = unknown3.Element ["userId"];
+			return int.Parse (child.InnerText);
+		}
+		
+		[SoapHeaderAttribute ("unknown4")]
+		[WebMethod]
+		public int TestUnknownHeader4 ()
+		{
+			if (unknown4 == null || unknown4.Length != 1)
+				throw new Exception ("Header is null");
+
+			if (unknown4[0].Actor != "hi")
+				throw new Exception ("Invalid actor");
+				
+			XmlElement child = unknown4[0].Element ["userId"];
+			return int.Parse (child.InnerText);
+		}
 	}
 
 	public class MyInfo

+ 55 - 0
mcs/class/System.Web.Services/Test/standalone/Conv.cs.template

@@ -203,16 +203,71 @@ namespace Localhost.$TEST_NAMESPACE$
 			el = nods[4] as XmlElement;
 			Assert.AreEqual ("b", el.Name, "t13");
 		}		
+		
+		[Test]
+		public void TestUnknownHeaders ()
+		{
+			ConverterServiceExtraTest et = new ConverterServiceExtraTest ();
+			et.Url = "http://localhost:8080/$ASMX_NAME$";
+			
+			et.myUserInfo = new MyUserInfo ();
+			et.myUserInfo.userId = 5;
+			et.myUserInfo.Actor = "hi";
+			
+			et.TestUnknownHeader1 ();
+			
+			et.TestUnknownHeader2 ();
+			
+			int res = et.TestUnknownHeader3 ();
+			Assert.AreEqual (5, res, "TestUnknownHeader3");
+
+			res = et.TestUnknownHeader4 ();
+			Assert.AreEqual (5, res, "TestUnknownHeader4");
+		}
 	}
 	
 	[System.Web.Services.WebServiceBindingAttribute(Name="ConverterServiceSoap", Namespace="urn:mono-ws-tests")]
 	public class ConverterServiceExtraTest : System.Web.Services.Protocols.SoapHttpClientProtocol
 	{
+		public MyUserInfo myUserInfo;
+		
 		[System.Web.Services.Protocols.$METHOD_ATTRIBUTE$("urn:mono-ws-tests/GetTestInfo", RequestNamespace="urn:mono-ws-tests", ResponseNamespace="urn:mono-ws-tests" $METHOD_ATTRIBUTE_PARAMS$)]
 		public object GetTestInfo(string s, out string d) {
 			object[] results = this.Invoke("GetTestInfo", new object[] {s});
 			d = (string) results[1];
 	        return ((object)(results[0]));
 		}
+		
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.$METHOD_ATTRIBUTE$("urn:mono-ws-tests/TestUnknownHeader1",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" $METHOD_ATTRIBUTE_PARAMS$)]
+        public virtual void TestUnknownHeader1() {
+            this.Invoke("TestUnknownHeader1", new object[0]);
+        }
+
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.$METHOD_ATTRIBUTE$("urn:mono-ws-tests/TestUnknownHeader2",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" $METHOD_ATTRIBUTE_PARAMS$)]
+        public virtual void TestUnknownHeader2() {
+            this.Invoke("TestUnknownHeader2", new object[0]);
+        }
+
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.$METHOD_ATTRIBUTE$("urn:mono-ws-tests/TestUnknownHeader3",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" $METHOD_ATTRIBUTE_PARAMS$)]
+        public virtual int TestUnknownHeader3() {
+            System.Object[] results = this.Invoke("TestUnknownHeader3", new object[0]);
+            return ((int)(results[0]));
+        }
+
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.$METHOD_ATTRIBUTE$("urn:mono-ws-tests/TestUnknownHeader4",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" $METHOD_ATTRIBUTE_PARAMS$)]
+        public virtual int TestUnknownHeader4() {
+            System.Object[] results = this.Invoke("TestUnknownHeader4", new object[0]);
+            return ((int)(results[0]));
+        }		
 	}
+	
+    public class MyUserInfo : System.Web.Services.Protocols.SoapHeader 
+	{
+        public int userId;
+    }
+	
 }

+ 55 - 0
mcs/class/System.Web.Services/Test/standalone/client/localhost/ConvDocEncBarTest.cs

@@ -203,16 +203,71 @@ namespace Localhost.ConvDocEncBarTests
 			el = nods[4] as XmlElement;
 			Assert.AreEqual ("b", el.Name, "t13");
 		}		
+		
+		[Test]
+		public void TestUnknownHeaders ()
+		{
+			ConverterServiceExtraTest et = new ConverterServiceExtraTest ();
+			et.Url = "http://localhost:8080/ConvDocEncBar.asmx";
+			
+			et.myUserInfo = new MyUserInfo ();
+			et.myUserInfo.userId = 5;
+			et.myUserInfo.Actor = "hi";
+			
+			et.TestUnknownHeader1 ();
+			
+			et.TestUnknownHeader2 ();
+			
+			int res = et.TestUnknownHeader3 ();
+			Assert.AreEqual (5, res, "TestUnknownHeader3");
+
+			res = et.TestUnknownHeader4 ();
+			Assert.AreEqual (5, res, "TestUnknownHeader4");
+		}
 	}
 	
 	[System.Web.Services.WebServiceBindingAttribute(Name="ConverterServiceSoap", Namespace="urn:mono-ws-tests")]
 	public class ConverterServiceExtraTest : System.Web.Services.Protocols.SoapHttpClientProtocol
 	{
+		public MyUserInfo myUserInfo;
+		
 		[System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/GetTestInfo", RequestNamespace="urn:mono-ws-tests", ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Encoded, ParameterStyle=SoapParameterStyle.Bare)]
 		public object GetTestInfo(string s, out string d) {
 			object[] results = this.Invoke("GetTestInfo", new object[] {s});
 			d = (string) results[1];
 	        return ((object)(results[0]));
 		}
+		
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/TestUnknownHeader1",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Encoded, ParameterStyle=SoapParameterStyle.Bare)]
+        public virtual void TestUnknownHeader1() {
+            this.Invoke("TestUnknownHeader1", new object[0]);
+        }
+
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/TestUnknownHeader2",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Encoded, ParameterStyle=SoapParameterStyle.Bare)]
+        public virtual void TestUnknownHeader2() {
+            this.Invoke("TestUnknownHeader2", new object[0]);
+        }
+
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/TestUnknownHeader3",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Encoded, ParameterStyle=SoapParameterStyle.Bare)]
+        public virtual int TestUnknownHeader3() {
+            System.Object[] results = this.Invoke("TestUnknownHeader3", new object[0]);
+            return ((int)(results[0]));
+        }
+
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/TestUnknownHeader4",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Encoded, ParameterStyle=SoapParameterStyle.Bare)]
+        public virtual int TestUnknownHeader4() {
+            System.Object[] results = this.Invoke("TestUnknownHeader4", new object[0]);
+            return ((int)(results[0]));
+        }		
 	}
+	
+    public class MyUserInfo : System.Web.Services.Protocols.SoapHeader 
+	{
+        public int userId;
+    }
+	
 }

+ 55 - 0
mcs/class/System.Web.Services/Test/standalone/client/localhost/ConvDocEncWraTest.cs

@@ -203,16 +203,71 @@ namespace Localhost.ConvDocEncWraTests
 			el = nods[4] as XmlElement;
 			Assert.AreEqual ("b", el.Name, "t13");
 		}		
+		
+		[Test]
+		public void TestUnknownHeaders ()
+		{
+			ConverterServiceExtraTest et = new ConverterServiceExtraTest ();
+			et.Url = "http://localhost:8080/ConvDocEncWra.asmx";
+			
+			et.myUserInfo = new MyUserInfo ();
+			et.myUserInfo.userId = 5;
+			et.myUserInfo.Actor = "hi";
+			
+			et.TestUnknownHeader1 ();
+			
+			et.TestUnknownHeader2 ();
+			
+			int res = et.TestUnknownHeader3 ();
+			Assert.AreEqual (5, res, "TestUnknownHeader3");
+
+			res = et.TestUnknownHeader4 ();
+			Assert.AreEqual (5, res, "TestUnknownHeader4");
+		}
 	}
 	
 	[System.Web.Services.WebServiceBindingAttribute(Name="ConverterServiceSoap", Namespace="urn:mono-ws-tests")]
 	public class ConverterServiceExtraTest : System.Web.Services.Protocols.SoapHttpClientProtocol
 	{
+		public MyUserInfo myUserInfo;
+		
 		[System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/GetTestInfo", RequestNamespace="urn:mono-ws-tests", ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Encoded, ParameterStyle=SoapParameterStyle.Wrapped)]
 		public object GetTestInfo(string s, out string d) {
 			object[] results = this.Invoke("GetTestInfo", new object[] {s});
 			d = (string) results[1];
 	        return ((object)(results[0]));
 		}
+		
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/TestUnknownHeader1",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Encoded, ParameterStyle=SoapParameterStyle.Wrapped)]
+        public virtual void TestUnknownHeader1() {
+            this.Invoke("TestUnknownHeader1", new object[0]);
+        }
+
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/TestUnknownHeader2",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Encoded, ParameterStyle=SoapParameterStyle.Wrapped)]
+        public virtual void TestUnknownHeader2() {
+            this.Invoke("TestUnknownHeader2", new object[0]);
+        }
+
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/TestUnknownHeader3",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Encoded, ParameterStyle=SoapParameterStyle.Wrapped)]
+        public virtual int TestUnknownHeader3() {
+            System.Object[] results = this.Invoke("TestUnknownHeader3", new object[0]);
+            return ((int)(results[0]));
+        }
+
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/TestUnknownHeader4",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Encoded, ParameterStyle=SoapParameterStyle.Wrapped)]
+        public virtual int TestUnknownHeader4() {
+            System.Object[] results = this.Invoke("TestUnknownHeader4", new object[0]);
+            return ((int)(results[0]));
+        }		
 	}
+	
+    public class MyUserInfo : System.Web.Services.Protocols.SoapHeader 
+	{
+        public int userId;
+    }
+	
 }

+ 55 - 0
mcs/class/System.Web.Services/Test/standalone/client/localhost/ConvDocLitBarTest.cs

@@ -203,16 +203,71 @@ namespace Localhost.ConvDocLitBarTests
 			el = nods[4] as XmlElement;
 			Assert.AreEqual ("b", el.Name, "t13");
 		}		
+		
+		[Test]
+		public void TestUnknownHeaders ()
+		{
+			ConverterServiceExtraTest et = new ConverterServiceExtraTest ();
+			et.Url = "http://localhost:8080/ConvDocLitBar.asmx";
+			
+			et.myUserInfo = new MyUserInfo ();
+			et.myUserInfo.userId = 5;
+			et.myUserInfo.Actor = "hi";
+			
+			et.TestUnknownHeader1 ();
+			
+			et.TestUnknownHeader2 ();
+			
+			int res = et.TestUnknownHeader3 ();
+			Assert.AreEqual (5, res, "TestUnknownHeader3");
+
+			res = et.TestUnknownHeader4 ();
+			Assert.AreEqual (5, res, "TestUnknownHeader4");
+		}
 	}
 	
 	[System.Web.Services.WebServiceBindingAttribute(Name="ConverterServiceSoap", Namespace="urn:mono-ws-tests")]
 	public class ConverterServiceExtraTest : System.Web.Services.Protocols.SoapHttpClientProtocol
 	{
+		public MyUserInfo myUserInfo;
+		
 		[System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/GetTestInfo", RequestNamespace="urn:mono-ws-tests", ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=SoapParameterStyle.Bare)]
 		public object GetTestInfo(string s, out string d) {
 			object[] results = this.Invoke("GetTestInfo", new object[] {s});
 			d = (string) results[1];
 	        return ((object)(results[0]));
 		}
+		
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/TestUnknownHeader1",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=SoapParameterStyle.Bare)]
+        public virtual void TestUnknownHeader1() {
+            this.Invoke("TestUnknownHeader1", new object[0]);
+        }
+
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/TestUnknownHeader2",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=SoapParameterStyle.Bare)]
+        public virtual void TestUnknownHeader2() {
+            this.Invoke("TestUnknownHeader2", new object[0]);
+        }
+
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/TestUnknownHeader3",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=SoapParameterStyle.Bare)]
+        public virtual int TestUnknownHeader3() {
+            System.Object[] results = this.Invoke("TestUnknownHeader3", new object[0]);
+            return ((int)(results[0]));
+        }
+
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/TestUnknownHeader4",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=SoapParameterStyle.Bare)]
+        public virtual int TestUnknownHeader4() {
+            System.Object[] results = this.Invoke("TestUnknownHeader4", new object[0]);
+            return ((int)(results[0]));
+        }		
 	}
+	
+    public class MyUserInfo : System.Web.Services.Protocols.SoapHeader 
+	{
+        public int userId;
+    }
+	
 }

+ 55 - 0
mcs/class/System.Web.Services/Test/standalone/client/localhost/ConvDocLitWraTest.cs

@@ -203,16 +203,71 @@ namespace Localhost.ConvDocLitWraTests
 			el = nods[4] as XmlElement;
 			Assert.AreEqual ("b", el.Name, "t13");
 		}		
+		
+		[Test]
+		public void TestUnknownHeaders ()
+		{
+			ConverterServiceExtraTest et = new ConverterServiceExtraTest ();
+			et.Url = "http://localhost:8080/ConvDocLitWra.asmx";
+			
+			et.myUserInfo = new MyUserInfo ();
+			et.myUserInfo.userId = 5;
+			et.myUserInfo.Actor = "hi";
+			
+			et.TestUnknownHeader1 ();
+			
+			et.TestUnknownHeader2 ();
+			
+			int res = et.TestUnknownHeader3 ();
+			Assert.AreEqual (5, res, "TestUnknownHeader3");
+
+			res = et.TestUnknownHeader4 ();
+			Assert.AreEqual (5, res, "TestUnknownHeader4");
+		}
 	}
 	
 	[System.Web.Services.WebServiceBindingAttribute(Name="ConverterServiceSoap", Namespace="urn:mono-ws-tests")]
 	public class ConverterServiceExtraTest : System.Web.Services.Protocols.SoapHttpClientProtocol
 	{
+		public MyUserInfo myUserInfo;
+		
 		[System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/GetTestInfo", RequestNamespace="urn:mono-ws-tests", ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=SoapParameterStyle.Wrapped)]
 		public object GetTestInfo(string s, out string d) {
 			object[] results = this.Invoke("GetTestInfo", new object[] {s});
 			d = (string) results[1];
 	        return ((object)(results[0]));
 		}
+		
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/TestUnknownHeader1",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=SoapParameterStyle.Wrapped)]
+        public virtual void TestUnknownHeader1() {
+            this.Invoke("TestUnknownHeader1", new object[0]);
+        }
+
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/TestUnknownHeader2",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=SoapParameterStyle.Wrapped)]
+        public virtual void TestUnknownHeader2() {
+            this.Invoke("TestUnknownHeader2", new object[0]);
+        }
+
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/TestUnknownHeader3",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=SoapParameterStyle.Wrapped)]
+        public virtual int TestUnknownHeader3() {
+            System.Object[] results = this.Invoke("TestUnknownHeader3", new object[0]);
+            return ((int)(results[0]));
+        }
+
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("urn:mono-ws-tests/TestUnknownHeader4",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" , Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=SoapParameterStyle.Wrapped)]
+        public virtual int TestUnknownHeader4() {
+            System.Object[] results = this.Invoke("TestUnknownHeader4", new object[0]);
+            return ((int)(results[0]));
+        }		
 	}
+	
+    public class MyUserInfo : System.Web.Services.Protocols.SoapHeader 
+	{
+        public int userId;
+    }
+	
 }

+ 55 - 0
mcs/class/System.Web.Services/Test/standalone/client/localhost/ConvRpcTest.cs

@@ -203,16 +203,71 @@ namespace Localhost.ConvRpcTests
 			el = nods[4] as XmlElement;
 			Assert.AreEqual ("b", el.Name, "t13");
 		}		
+		
+		[Test]
+		public void TestUnknownHeaders ()
+		{
+			ConverterServiceExtraTest et = new ConverterServiceExtraTest ();
+			et.Url = "http://localhost:8080/ConvRpc.asmx";
+			
+			et.myUserInfo = new MyUserInfo ();
+			et.myUserInfo.userId = 5;
+			et.myUserInfo.Actor = "hi";
+			
+			et.TestUnknownHeader1 ();
+			
+			et.TestUnknownHeader2 ();
+			
+			int res = et.TestUnknownHeader3 ();
+			Assert.AreEqual (5, res, "TestUnknownHeader3");
+
+			res = et.TestUnknownHeader4 ();
+			Assert.AreEqual (5, res, "TestUnknownHeader4");
+		}
 	}
 	
 	[System.Web.Services.WebServiceBindingAttribute(Name="ConverterServiceSoap", Namespace="urn:mono-ws-tests")]
 	public class ConverterServiceExtraTest : System.Web.Services.Protocols.SoapHttpClientProtocol
 	{
+		public MyUserInfo myUserInfo;
+		
 		[System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:mono-ws-tests/GetTestInfo", RequestNamespace="urn:mono-ws-tests", ResponseNamespace="urn:mono-ws-tests" )]
 		public object GetTestInfo(string s, out string d) {
 			object[] results = this.Invoke("GetTestInfo", new object[] {s});
 			d = (string) results[1];
 	        return ((object)(results[0]));
 		}
+		
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:mono-ws-tests/TestUnknownHeader1",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" )]
+        public virtual void TestUnknownHeader1() {
+            this.Invoke("TestUnknownHeader1", new object[0]);
+        }
+
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:mono-ws-tests/TestUnknownHeader2",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" )]
+        public virtual void TestUnknownHeader2() {
+            this.Invoke("TestUnknownHeader2", new object[0]);
+        }
+
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:mono-ws-tests/TestUnknownHeader3",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" )]
+        public virtual int TestUnknownHeader3() {
+            System.Object[] results = this.Invoke("TestUnknownHeader3", new object[0]);
+            return ((int)(results[0]));
+        }
+
+        [System.Web.Services.Protocols.SoapHeaderAttribute("myUserInfo")]
+        [System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:mono-ws-tests/TestUnknownHeader4",RequestNamespace="urn:mono-ws-tests",ResponseNamespace="urn:mono-ws-tests" )]
+        public virtual int TestUnknownHeader4() {
+            System.Object[] results = this.Invoke("TestUnknownHeader4", new object[0]);
+            return ((int)(results[0]));
+        }		
 	}
+	
+    public class MyUserInfo : System.Web.Services.Protocols.SoapHeader 
+	{
+        public int userId;
+    }
+	
 }

+ 56 - 0
mcs/class/System.Web.Services/Test/standalone/server/ConvDocEncBar.asmx

@@ -7,6 +7,7 @@ Changes to this file will be lost if the code is regenerated
 
 using System;
 using System.Collections;
+using System.Xml;
 using System.Xml.Serialization;
 using System.Web.Services;
 using System.Web.Services.Protocols;
@@ -48,6 +49,11 @@ namespace WebServiceTests
 		static Hashtable conversionTable;
 		
 		public UserInfo userInfo;
+		
+		public SoapHeader unknown1;
+		public SoapHeader[] unknown2;
+		public SoapUnknownHeader unknown3;
+		public SoapUnknownHeader[] unknown4;
 
 		static ConverterService ()
 		{
@@ -159,6 +165,56 @@ namespace WebServiceTests
 			d = "iii";
 			return new MyInfo();
 		}
+		
+		[SoapHeaderAttribute ("unknown1")]
+		[WebMethod]
+		public void TestUnknownHeader1 ()
+		{
+			if (unknown1 == null)
+				throw new Exception ("Header is null");
+
+			if (unknown1.Actor != "hi")
+				throw new Exception ("Invalid actor");
+		}
+		
+		[SoapHeaderAttribute ("unknown2")]
+		[WebMethod]
+		public void TestUnknownHeader2 ()
+		{
+			if (unknown2 == null || unknown2.Length != 1)
+				throw new Exception ("Header is null");
+
+			if (unknown2[0].Actor != "hi")
+				throw new Exception ("Invalid actor");
+		}
+		
+		[SoapHeaderAttribute ("unknown3")]
+		[WebMethod]
+		public int TestUnknownHeader3 ()
+		{
+			if (unknown3 == null)
+				throw new Exception ("Header is null");
+
+			if (unknown3.Actor != "hi")
+				throw new Exception ("Invalid actor");
+				
+			XmlElement child = unknown3.Element ["userId"];
+			return int.Parse (child.InnerText);
+		}
+		
+		[SoapHeaderAttribute ("unknown4")]
+		[WebMethod]
+		public int TestUnknownHeader4 ()
+		{
+			if (unknown4 == null || unknown4.Length != 1)
+				throw new Exception ("Header is null");
+
+			if (unknown4[0].Actor != "hi")
+				throw new Exception ("Invalid actor");
+				
+			XmlElement child = unknown4[0].Element ["userId"];
+			return int.Parse (child.InnerText);
+		}
 	}
 
 	public class MyInfo

+ 56 - 0
mcs/class/System.Web.Services/Test/standalone/server/ConvDocEncWra.asmx

@@ -7,6 +7,7 @@ Changes to this file will be lost if the code is regenerated
 
 using System;
 using System.Collections;
+using System.Xml;
 using System.Xml.Serialization;
 using System.Web.Services;
 using System.Web.Services.Protocols;
@@ -48,6 +49,11 @@ namespace WebServiceTests
 		static Hashtable conversionTable;
 		
 		public UserInfo userInfo;
+		
+		public SoapHeader unknown1;
+		public SoapHeader[] unknown2;
+		public SoapUnknownHeader unknown3;
+		public SoapUnknownHeader[] unknown4;
 
 		static ConverterService ()
 		{
@@ -159,6 +165,56 @@ namespace WebServiceTests
 			d = "iii";
 			return new MyInfo();
 		}
+		
+		[SoapHeaderAttribute ("unknown1")]
+		[WebMethod]
+		public void TestUnknownHeader1 ()
+		{
+			if (unknown1 == null)
+				throw new Exception ("Header is null");
+
+			if (unknown1.Actor != "hi")
+				throw new Exception ("Invalid actor");
+		}
+		
+		[SoapHeaderAttribute ("unknown2")]
+		[WebMethod]
+		public void TestUnknownHeader2 ()
+		{
+			if (unknown2 == null || unknown2.Length != 1)
+				throw new Exception ("Header is null");
+
+			if (unknown2[0].Actor != "hi")
+				throw new Exception ("Invalid actor");
+		}
+		
+		[SoapHeaderAttribute ("unknown3")]
+		[WebMethod]
+		public int TestUnknownHeader3 ()
+		{
+			if (unknown3 == null)
+				throw new Exception ("Header is null");
+
+			if (unknown3.Actor != "hi")
+				throw new Exception ("Invalid actor");
+				
+			XmlElement child = unknown3.Element ["userId"];
+			return int.Parse (child.InnerText);
+		}
+		
+		[SoapHeaderAttribute ("unknown4")]
+		[WebMethod]
+		public int TestUnknownHeader4 ()
+		{
+			if (unknown4 == null || unknown4.Length != 1)
+				throw new Exception ("Header is null");
+
+			if (unknown4[0].Actor != "hi")
+				throw new Exception ("Invalid actor");
+				
+			XmlElement child = unknown4[0].Element ["userId"];
+			return int.Parse (child.InnerText);
+		}
 	}
 
 	public class MyInfo

+ 56 - 0
mcs/class/System.Web.Services/Test/standalone/server/ConvDocLitBar.asmx

@@ -7,6 +7,7 @@ Changes to this file will be lost if the code is regenerated
 
 using System;
 using System.Collections;
+using System.Xml;
 using System.Xml.Serialization;
 using System.Web.Services;
 using System.Web.Services.Protocols;
@@ -48,6 +49,11 @@ namespace WebServiceTests
 		static Hashtable conversionTable;
 		
 		public UserInfo userInfo;
+		
+		public SoapHeader unknown1;
+		public SoapHeader[] unknown2;
+		public SoapUnknownHeader unknown3;
+		public SoapUnknownHeader[] unknown4;
 
 		static ConverterService ()
 		{
@@ -159,6 +165,56 @@ namespace WebServiceTests
 			d = "iii";
 			return new MyInfo();
 		}
+		
+		[SoapHeaderAttribute ("unknown1")]
+		[WebMethod]
+		public void TestUnknownHeader1 ()
+		{
+			if (unknown1 == null)
+				throw new Exception ("Header is null");
+
+			if (unknown1.Actor != "hi")
+				throw new Exception ("Invalid actor");
+		}
+		
+		[SoapHeaderAttribute ("unknown2")]
+		[WebMethod]
+		public void TestUnknownHeader2 ()
+		{
+			if (unknown2 == null || unknown2.Length != 1)
+				throw new Exception ("Header is null");
+
+			if (unknown2[0].Actor != "hi")
+				throw new Exception ("Invalid actor");
+		}
+		
+		[SoapHeaderAttribute ("unknown3")]
+		[WebMethod]
+		public int TestUnknownHeader3 ()
+		{
+			if (unknown3 == null)
+				throw new Exception ("Header is null");
+
+			if (unknown3.Actor != "hi")
+				throw new Exception ("Invalid actor");
+				
+			XmlElement child = unknown3.Element ["userId"];
+			return int.Parse (child.InnerText);
+		}
+		
+		[SoapHeaderAttribute ("unknown4")]
+		[WebMethod]
+		public int TestUnknownHeader4 ()
+		{
+			if (unknown4 == null || unknown4.Length != 1)
+				throw new Exception ("Header is null");
+
+			if (unknown4[0].Actor != "hi")
+				throw new Exception ("Invalid actor");
+				
+			XmlElement child = unknown4[0].Element ["userId"];
+			return int.Parse (child.InnerText);
+		}
 	}
 
 	public class MyInfo

+ 56 - 0
mcs/class/System.Web.Services/Test/standalone/server/ConvDocLitWra.asmx

@@ -7,6 +7,7 @@ Changes to this file will be lost if the code is regenerated
 
 using System;
 using System.Collections;
+using System.Xml;
 using System.Xml.Serialization;
 using System.Web.Services;
 using System.Web.Services.Protocols;
@@ -48,6 +49,11 @@ namespace WebServiceTests
 		static Hashtable conversionTable;
 		
 		public UserInfo userInfo;
+		
+		public SoapHeader unknown1;
+		public SoapHeader[] unknown2;
+		public SoapUnknownHeader unknown3;
+		public SoapUnknownHeader[] unknown4;
 
 		static ConverterService ()
 		{
@@ -159,6 +165,56 @@ namespace WebServiceTests
 			d = "iii";
 			return new MyInfo();
 		}
+		
+		[SoapHeaderAttribute ("unknown1")]
+		[WebMethod]
+		public void TestUnknownHeader1 ()
+		{
+			if (unknown1 == null)
+				throw new Exception ("Header is null");
+
+			if (unknown1.Actor != "hi")
+				throw new Exception ("Invalid actor");
+		}
+		
+		[SoapHeaderAttribute ("unknown2")]
+		[WebMethod]
+		public void TestUnknownHeader2 ()
+		{
+			if (unknown2 == null || unknown2.Length != 1)
+				throw new Exception ("Header is null");
+
+			if (unknown2[0].Actor != "hi")
+				throw new Exception ("Invalid actor");
+		}
+		
+		[SoapHeaderAttribute ("unknown3")]
+		[WebMethod]
+		public int TestUnknownHeader3 ()
+		{
+			if (unknown3 == null)
+				throw new Exception ("Header is null");
+
+			if (unknown3.Actor != "hi")
+				throw new Exception ("Invalid actor");
+				
+			XmlElement child = unknown3.Element ["userId"];
+			return int.Parse (child.InnerText);
+		}
+		
+		[SoapHeaderAttribute ("unknown4")]
+		[WebMethod]
+		public int TestUnknownHeader4 ()
+		{
+			if (unknown4 == null || unknown4.Length != 1)
+				throw new Exception ("Header is null");
+
+			if (unknown4[0].Actor != "hi")
+				throw new Exception ("Invalid actor");
+				
+			XmlElement child = unknown4[0].Element ["userId"];
+			return int.Parse (child.InnerText);
+		}
 	}
 
 	public class MyInfo

+ 56 - 0
mcs/class/System.Web.Services/Test/standalone/server/ConvRpc.asmx

@@ -7,6 +7,7 @@ Changes to this file will be lost if the code is regenerated
 
 using System;
 using System.Collections;
+using System.Xml;
 using System.Xml.Serialization;
 using System.Web.Services;
 using System.Web.Services.Protocols;
@@ -48,6 +49,11 @@ namespace WebServiceTests
 		static Hashtable conversionTable;
 		
 		public UserInfo userInfo;
+		
+		public SoapHeader unknown1;
+		public SoapHeader[] unknown2;
+		public SoapUnknownHeader unknown3;
+		public SoapUnknownHeader[] unknown4;
 
 		static ConverterService ()
 		{
@@ -159,6 +165,56 @@ namespace WebServiceTests
 			d = "iii";
 			return new MyInfo();
 		}
+		
+		[SoapHeaderAttribute ("unknown1")]
+		[WebMethod]
+		public void TestUnknownHeader1 ()
+		{
+			if (unknown1 == null)
+				throw new Exception ("Header is null");
+
+			if (unknown1.Actor != "hi")
+				throw new Exception ("Invalid actor");
+		}
+		
+		[SoapHeaderAttribute ("unknown2")]
+		[WebMethod]
+		public void TestUnknownHeader2 ()
+		{
+			if (unknown2 == null || unknown2.Length != 1)
+				throw new Exception ("Header is null");
+
+			if (unknown2[0].Actor != "hi")
+				throw new Exception ("Invalid actor");
+		}
+		
+		[SoapHeaderAttribute ("unknown3")]
+		[WebMethod]
+		public int TestUnknownHeader3 ()
+		{
+			if (unknown3 == null)
+				throw new Exception ("Header is null");
+
+			if (unknown3.Actor != "hi")
+				throw new Exception ("Invalid actor");
+				
+			XmlElement child = unknown3.Element ["userId"];
+			return int.Parse (child.InnerText);
+		}
+		
+		[SoapHeaderAttribute ("unknown4")]
+		[WebMethod]
+		public int TestUnknownHeader4 ()
+		{
+			if (unknown4 == null || unknown4.Length != 1)
+				throw new Exception ("Header is null");
+
+			if (unknown4[0].Actor != "hi")
+				throw new Exception ("Invalid actor");
+				
+			XmlElement child = unknown4[0].Element ["userId"];
+			return int.Parse (child.InnerText);
+		}
 	}
 
 	public class MyInfo

BIN
mcs/class/System.Web.Services/Test/standalone/wsdlfiles.tar.gz