为 JAX-WS 注册机创建 .NET 客户端

Creating .NET Client to JAX-WS RI

我刚得到一些 XML,其中包含 JAX-WS RI 以及在 MS 中使用它的说明 Visual Studio 以便为此 Web 服务生成 .NET 客户端。

我认为没有办法做到这一点。因为据我所知,我们必须使用 VS GUI 添加 Web Service Reference

对吗?

<?xml version='1.0' encoding='UTF-8'?><!-- Published by JAX-WS RI (http://jax-ws.java.net). RI's version is JAX-WS RI 2.2.10 svn-revision#919b322c92f13ad085a933e8dd6dd35d4947364b. --><!-- Generated by JAX-WS RI (http://jax-ws.java.net). RI's version is JAX-WS RI 2.2.10 svn-revision#919b322c92f13ad085a933e8dd6dd35d4947364b. --><definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.ttt.mysite.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://ws.ttt.mysite.com/" name="wsttt">
<types>
<xsd:schema>
<xsd:import namespace="http://ws.ttt.mysite.com/" schemaLocation="http://12.2.220.9:8081/ws-ttt/wsspi?xsd=1"/>
</xsd:schema>
</types>
...

好的-解决方案在这里https://code.msdn.microsoft.com/Generating-a-Web-Service-95ff4e10

Notice that this solution need that schema file xsd should be incorparated within wsdl.
 public static void Generate(string wsdlPath, string outputFilePath) 
    { 
        if (File.Exists(wsdlPath) == false) 
        { 
            return; 
        } 

        ServiceDescription wsdlDescription = ServiceDescription.Read(wsdlPath); 
        ServiceDescriptionImporter wsdlImporter = new ServiceDescriptionImporter(); 

        wsdlImporter.ProtocolName = "Soap12"; 
        wsdlImporter.AddServiceDescription(wsdlDescription, null, null); 
        wsdlImporter.Style = ServiceDescriptionImportStyle.Server; 

        wsdlImporter.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties; 

        CodeNamespace codeNamespace = new CodeNamespace(); 
        CodeCompileUnit codeUnit = new CodeCompileUnit(); 
        codeUnit.Namespaces.Add(codeNamespace); 

        ServiceDescriptionImportWarnings importWarning = wsdlImporter.Import(codeNamespace, codeUnit); 

        if (importWarning == 0) 
        { 
            StringBuilder stringBuilder = new StringBuilder(); 
            StringWriter stringWriter = new StringWriter(stringBuilder); 

            CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("CSharp"); 
            codeProvider.GenerateCodeFromCompileUnit(codeUnit, stringWriter, new CodeGeneratorOptions()); 

            stringWriter.Close(); 

            File.WriteAllText(outputFilePath, stringBuilder.ToString(), Encoding.UTF8); 
        } 
        else 
        { 
            Console.WriteLine(importWarning); 
        } 
    }