private DiscoveryReference GenerateWebReferences(WebReference reference, CodeCompileUnit compileUnit) { var result = new DiscoveryReference(); CheckInteroperabilityConformance(reference, result); var webReferences = new WebReferenceCollection { reference }; var options = new WebReferenceOptions { CodeGenerationOptions = CodeGenerationOptions.GenerateProperties }; ServiceDescriptionImporter.GenerateWebReferences( webReferences, _codeProvider, compileUnit, options); CheckDescriptionImportValidations(reference, result); if (result.HasErrors) { return(result); } result.CodeDom = compileUnit; result.CodeProvider = _codeProvider; result.Bindings.AddRange( GetSoapBindings(_discovery.GetServices())); return(result); }
private static void CheckInteroperabilityConformance(WebReference reference, DiscoveryReference result) { var violations = new BasicProfileViolationCollection(); WebServicesInteroperability.CheckConformance(WsiProfiles.BasicProfile1_1, reference, violations); if (violations.Count > 0) { result.Warn("This web reference does not conform to WS-I Basic Profile v1.1."); foreach (var v in violations) { result.Warn(v.ToString()); } } }
private static void CheckDescriptionImportValidations(WebReference reference, DiscoveryReference result) { foreach (var validationMessage in reference.ValidationWarnings) { result.Warn(validationMessage); } var flags = reference.Warnings; if ((flags & ServiceDescriptionImportWarnings.SchemaValidation) != 0) { result.Warn("Schema could not be validated. Class generation may fail or may produce incorrect results."); } if ((flags & ServiceDescriptionImportWarnings.OptionalExtensionsIgnored) != 0) { result.Warn("One or more optional WSDL extension elements were ignored."); } if ((flags & ServiceDescriptionImportWarnings.UnsupportedOperationsIgnored) != 0) { result.Warn("One or more operations were skipped."); } if ((flags & ServiceDescriptionImportWarnings.UnsupportedBindingsIgnored) != 0) { result.Warn("One or more bindings were skipped."); } if ((flags & ServiceDescriptionImportWarnings.RequiredExtensionsIgnored) != 0) { result.Warn("One or more required WSDL extension elements were ignored."); } if ((flags & ServiceDescriptionImportWarnings.NoMethodsGenerated) != 0) { result.Error("No methods were generated."); } if ((flags & ServiceDescriptionImportWarnings.NoCodeGenerated) != 0) { result.Error("No classes were generated."); } }