Quantcast
Channel: Web API
Viewing all articles
Browse latest Browse all 4850

Exception thrown: 'System.Reflection.TargetParameterCountException' in mscorlib.dll Additional information: Parameter count mismatch. occurred

$
0
0

Hi

I have an asmx file,without web reference and service reference i had created code like the below. I had passed url,servicename,methodname and parameters as args. I am getting error  Parameter count mismatch. occurred.

[SecurityPermissionAttribute(SecurityAction.Demand, Unrestricted = true)]
       public static object CallWebService(string webServiceAsmxUrl, string serviceName, string methodName, object[] args)
       {
           System.Net.WebClient client = new System.Net.WebClient();
           //-Connect To the web service
           using (System.IO.Stream stream = client.OpenRead(webServiceAsmxUrl + "?wsdl"))
           {
               //--Now read the WSDL file describing a service.
               ServiceDescription description = ServiceDescription.Read(stream);
               ///// LOAD THE DOM /////////
               //--Initialize a service description importer.
               ServiceDescriptionImporter importer = new ServiceDescriptionImporter();
               importer.ProtocolName = "Soap12"; // Use SOAP 1.2.
               importer.AddServiceDescription(description, null, null);
               //--Generate a proxy client. importer.Style = ServiceDescriptionImportStyle.Client;
               //--Generate properties to represent primitive values.
               importer.CodeGenerationOptions = System.Xml.Serialization.CodeGenerationOptions.GenerateProperties;
               //--Initialize a Code-DOM tree into which we will import the service.
               CodeNamespace nmspace = new CodeNamespace();
               CodeCompileUnit unit1 = new CodeCompileUnit();
               unit1.Namespaces.Add(nmspace);
               //--Import the service into the Code-DOM tree. This creates proxy code
               //--that uses the service.
               ServiceDescriptionImportWarnings warning = importer.Import(nmspace, unit1);
               if (warning == 0) //--If zero then we are good to go
               {
                   //--Generate the proxy code
                   CodeDomProvider provider1 = CodeDomProvider.CreateProvider("CSharp");
                   //--Compile the assembly proxy with the appropriate references
                   string[] assemblyReferences = new string[5] { "System.dll", "System.Web.Services.dll", "System.Web.dll", "System.Xml.dll", "System.Data.dll" };
                   CompilerParameters parms = new CompilerParameters(assemblyReferences);
                   CompilerResults results = provider1.CompileAssemblyFromDom(parms, unit1);
                   //-Check For Errors
                   if (results.Errors.Count > 0)
                   {
                       StringBuilder sb = new StringBuilder();
                       foreach (CompilerError oops in results.Errors)
                       {
                           sb.AppendLine("========Compiler error============");
                           sb.AppendLine(oops.ErrorText);
                       }
                       throw new System.ApplicationException("Compile Error Occured calling webservice. " + sb.ToString());
                   }
                   //--Finally, Invoke the web service method
                   Type foundType = null;
                   Type[] types = results.CompiledAssembly.GetTypes();
                   foreach (Type type in types)
                   {
                       if (type.BaseType == typeof(System.Web.Services.Protocols.SoapHttpClientProtocol))
                       {
                           Console.WriteLine(type.ToString());
                           foundType = type;
                       }
                   }
                   object wsvcClass = results.CompiledAssembly.CreateInstance(foundType.ToString());
                   MethodInfo mi = wsvcClass.GetType().GetMethod(methodName);
                   return mi.Invoke(wsvcClass, args);
               }
               else
               {
                   return null;
               }
           }
       }




Viewing all articles
Browse latest Browse all 4850

Trending Articles