ServiceContractGenerator를 사용하여 wsdl에서 C#으로 웹 서비스 클라이언트를 생성하려고합니다. 나는이 수업을 처음 접했어. Microsoft의 사이트에있는 예제와 웹에서 읽은 코드에 나와있는 코드를 사용하고 있습니다. wsdl에서 Svcutil.exe를 실행하면 C# 코드에서 동일한 네임 스페이스의 모든 유형을 가져옵니다. ServiceContractGenerator를 사용할 때 클라이언트 코드를 지정한 네임 스페이스에 넣지 만 wsdl 유형의 두 번째 네임 스페이스를 만듭니다. 내가 사용하고ServiceContractGenerator는 네임 스페이스를 어떻게 생성합니까?
<wsdl:message name="ICorrespondenceAdmin_ListOwners_InputMessage"><wsdl:part name="parameters" element="tns:ListOwners"/></wsdl:message>
코드로 정의 된 메시지가
generator = new ServiceContractGenerator();
try {
generator.NamespaceMappings.Add("*", "WebServiceClients");
}
catch (Exception) {
}
MetadataExchangeClient mexClient =
new MetadataExchangeClient(
new Uri(uri),
MetadataExchangeClientMode.HttpGet);
mexClient.ResolveMetadataReferences = true;
MetadataSet metaDocs = mexClient.GetMetadata();
WsdlImporter importer = new WsdlImporter(metaDocs);
System.Collections.ObjectModel.Collection<ContractDescription> contracts
= importer.ImportAllContracts();
ServiceEndpointCollection eps = importer.ImportAllEndpoints();
foreach (ContractDescription contract in contracts) {
generator.GenerateServiceContractType(contract);
}
if (generator.Errors.Count != 0)
throw new Exception("There were errors during code compilation.");
StringWriter stringWriter =
new StringWriter(System.Globalization.CultureInfo.CurrentCulture);
System.CodeDom.Compiler.IndentedTextWriter textWriter
= new System.CodeDom.Compiler.IndentedTextWriter(stringWriter);
codeDomProvider.GenerateCodeFromCompileUnit(
generator.TargetCompileUnit,
textWriter,
options);
textWriter.Close();
내가 클라이언트에 대한 WebServicesclients의 네임 스페이스를 얻을이다
<wsdl:types><xsd:schema targetNamespace="http://tempuri.org/Imports"><xsd:import schemaLocation="http://devabntstapp10.psohealth.local/TZ_TCS_SERVICES/AdminService.svc?xsd=xsd0" namespace="http://tempuri.org/"/><xsd:import schemaLocation="http://yyy/zzz/AdminService.svc?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/zzz.Correspondence"/><xsd:import schemaLocation="http:/yyy/zzz/AdminService.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/"/></xsd:schema></wsdl:types>
: WSDL의이 같은 섹션이 모든 매개 변수 및 반환 유형에 대한 CorrespondenceAdminClient 클래스 및 zzz.Correspondence의 네임 스페이스. Svcutil은이 모든 것을 WebServicesclients에 저장합니다. 나는 뭔가를 놓친 것 같다.