Пример #1
0
        private dynamic InvokeMethod(object parameters, string methodName)
        {
            var parameterTypeFactory      = new ParameterTypeFactory();
            var endpointFactory           = new EndpointFactory(parameterTypeFactory);
            var pathHelper                = new PathHelper();
            var configHelper              = new ConfigHelper();
            var wcfClientBuilder          = new WcfClientBuilder(pathHelper);
            var endpointCache             = new EndpointCache(pathHelper);
            var endpointDefinitionFactory = new EndpointDefinitionFactory(pathHelper, wcfClientBuilder, configHelper);
            var analysisService           = new AnalysisService(endpointFactory, endpointDefinitionFactory, endpointCache);
            var invocationService         = new InvocationService(endpointCache, configHelper);

            var port    = 3030;
            var address = $"http://localhost:{port}/Services/DummyService.svc";

            IList <Endpoint> endpoints = null;

            try
            {
                endpoints = analysisService.AnalyzeAddress(address);
            }
            catch (Exception e)
            {
                throw new Exception($"Could not analyze service at address {address}. " +
                                    "This may be because the service is not running in IIS. To add the service " +
                                    "in IIS, add a new website with the following parameters: path=C:\\inetpub\\wwwroot, " +
                                    $"binding=http, port={port}, hostname=<blank>. Then right-click this website " +
                                    "and select Add Application, using the following parameters: alias=Services, " +
                                    "path=<path to WcfPad.DummyWcfService project>. You may also need to give the " +
                                    "users IIS_IUSRS and IUSR full access to the WcfPad.DummyWcfService folder. " +
                                    $"EXCEPTION MESSAGE: {e.Message}");
            }

            var     serializedParameters = JsonConvert.SerializeObject(parameters);
            dynamic response             = invocationService.InvokeMethod(endpoints.FirstOrDefault().Id, methodName, serializedParameters);

            return(response);
        }