Ejemplo n.º 1
0
 private DynamicWebServiceProxy CreateProxy(string source)
 {
     try
     {
         //Intentamos vaciar la cache de ensamblado de clase proxy,
         //es decir borrar el fichero dll que se creó en una sesión
         //anterior, de forma que el ensamblado se genere de nuevo
         //y pueda reflejarse cualquier modificación en el WebService.
         //Normalmente esto sólo lo conseguiremos la primera vez
         //que iniciemos la sesión SOAP con un nuevo WSDL.
         //No se pueden reflejar los cambios hechos en el WebService
         //mientras la sesión SOAP estaba abierta ya que no se puede
         //borrar la dll de un ensamblado que esté cargado en memoria.
         //Por tanto, para reflejar cambios en el WebService en un
         //momento dado siempre habrá que reiniciar la sesión SIGUANETDesktop.
         DynamicWebServiceProxy.ClearCache(source);
         return(new DynamicWebServiceProxy());
     }
     catch
     {
         return(new DynamicWebServiceProxy());
     }
 }
Ejemplo n.º 2
0
 private void bnClearCache_Click(object sender, EventArgs e)
 {
     wsp.ClearCache(tbWSDL.Text);
 }
Ejemplo n.º 3
0
        public WebServiceCollection Enumerate()
        {
            //  Clear the cache every time.  If we are running this on a site we should
            //  be seeing everything for the first time (hence no cache benefit), and
            //  for development the cache just causes problems with changes not being
            //  recognized.
            try
            {
                DynamicWebServiceProxy.ClearCache(WSDL);
            }
            catch
            {
                //  The file handling in the DynWSLib cache is kind of strange, so this usually isn't a
                //  big problem.  Usually  :)  It often means that the DLL has already been loaded by this
                //  process and can't be unloaded.
            }

            StringBuilder text = new StringBuilder();

            DynamicProxy.EnableMessageAccess = true;
            DynamicProxy.Wsdl = WSDL;

            Type[] types = DynamicProxy.ProxyAssembly.GetTypes();

            foreach (Type t in types)
            {
                WebService currentWebService;

                if (t.BaseType == typeof(SoapHttpClientProtocolExtended))
                {
                    text.Append("Found a WebService: ");
                    text.Append(t.Name);
                    text.Append("\n");

                    // Services.WebServices.Add(new WebService(t.Name));
                    currentWebService = new WebService(Services, t.Name);
                    Services.WebServices.Add(currentWebService);

                    MethodInfo[] mi = t.GetMethods(BindingFlags.Public |
                                                   BindingFlags.Instance |
                                                   BindingFlags.DeclaredOnly);

                    foreach (MethodInfo m in mi)
                    {
                        if (!(m.Name.StartsWith("Begin") || m.Name.StartsWith("End")))
                        {
                            text.Append("Found a method: ");
                            text.Append(m.Name);
                            text.Append(" with return type: ");
                            text.Append(m.ReturnType);
                            text.Append("\n");

                            Method currentMethod = new Method(currentWebService, m.Name, m.ReturnType);
                            currentWebService.Methods.Add(currentMethod);

                            ParameterInfo[] pi = m.GetParameters();
                            // paramInfo = pi;

                            foreach (ParameterInfo p in pi)
                            {
                                text.Append("Found a parameter: ");
                                text.Append(p.Name);
                                text.Append(":");
                                text.Append(p.ParameterType);
                                text.Append("\n");

                                Parameter currentParameter;
                                currentParameter = new Parameter(p.Name, p.ParameterType);
                                currentMethod.Parameters.Add(currentParameter);
                            }
                        }
                    }
                }
                else
                {
                    text.Append("Found non-standard Type: ");
                    text.Append(t.Name);
                    text.Append("\n");
                }
            }

            //  TODO - Make this have no return value and use the WebServicesCollection.ToString instead.
            System.Console.WriteLine(text.ToString());
            // return (text.ToString());
            return(_Services);
        }
Ejemplo n.º 4
0
 private void bnClearCache_Click(object sender, EventArgs e)
 {
     DynamicWebServiceProxy.ClearCache(tbWSDL.Text);
 }