wsdl.exe /language:CS /n:WebReference /protocol:SOAP12 /out:C:Reference.cs C:\WSDL\Service.wsdl C:\WSDL\Service.xsd
这是我在命令行生成代理类的时候输入的命令.
按下回车键的时候发生了警告说是代理不能被生成,当我把protocol:SOAP12 改成protocol:SOAP的时候却可以正确生成.
请问这个是什么原因
我想生成的是SOAP1.2版本的代理类,不需要SOAP1.1的.怎么样才可以正确生成SOAP1.2的啊?
和.Net的版本有关系么??
先谢谢拉

解决方案 »

  1.   

    .net 2008 支持soap 1.2,好像2005 以下都是soap1.1
      

  2.   

    那你的意思是要装.net 2008 了??
    网上可以下到吗?
      

  3.   

    .net3.5 framework吧,你可以去微软网站下Visual Studio Team System 2008 Team Suite (90-day Trial)
    下载地址: 
    http://download.microsoft.com/download/d/8/9/d89c9839-ac45-4a6c-b25f-2f60b190e356/VS2008TeamSuiteENU90DayTrialX1429235.isoVisual Studio Team System 2008 Team Foundation Server (90-day Trial)
    下载地址: 
    http://download.microsoft.com/download/4/5/4/454df3e1-c0d7-46f3-81f2-fc26d465c8b4/VS2008TeamFoundationServerENU90DayTrialX1429244.iso Microsoft .NET Framework Version 3.5 http://download.microsoft.com/download/7/0/3/703455ee-a747-4cc8-bd3e-98a615c3aedb/dotNetFx35setup.exe
      

  4.   

    你直接安装.NET Framework 3.5的JDK就行了  不用装vs2008地址:
    http://download.microsoft.com/download/7/0/3/703455ee-a747-4cc8-bd3e-98a615c3aedb/dotNetFx35setup.exe
      

  5.   

    .net3.5 framework我已经安装了.
    但是因为我的VS是2005版本的,只支持.NET2.0
    不支持.NET3.5的所以我想我只需要装一个VS2008就可以了.但是从
    http://download.microsoft.com/download/d/8/9/d89c9839-ac45-4a6c-b25f-2f60b190e356/VS2008TeamSuiteENU90DayTrialX1429235.iso 
    下载到的是一个iso 后缀的文件./
    打不开,没法安装//
      

  6.   

    应该直接装个3.5的SDK就行了吧
      

  7.   

    .net 2008 支持soap 1.2,好像2005 及以下都是soap1.1
    装个3.5的SDK就可以了
      

  8.   

    3.5的SDK和.NET 3.5 Framework有什么区别吗?
      

  9.   


    我装的是.NET FrameWork 3.5 SP1
    但是每次从VS的命令行生成代理类的时候还是莫认的是.NET2.0啊莫非真要装VS2008???
      

  10.   

    警告啊, 不用管的, 如果开心, 自己搞个 socket 像下面这样直接 post 也行      string requestHeader = null;
          string requestBody = null;
          requestHeader = "POST /WebServices/WeatherWebService.asmx HTTP/1.1\r\n"
                      + "Host: www.webxml.com.cn\r\n"
                      + "Content-Type: text/xml; charset=utf-8\r\n"
                      + "Content-Length: " + requestBody.Length + "\r\n"
                      + "SOAPAction: \"http://WebXml.com.cn/getWeatherbyCityName\"\r\n"
                      + "Connection: Close\r\n\r\n";      requestBody = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"
                      + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\r\n"
                      + "  <soap:Body>\r\n"
                      + "    <getWeatherbyCityName xmlns=\"http://WebXml.com.cn/\">\r\n"
                      + "      <theCityName>" + areaCode + "</theCityName>\r\n"
                      + "    </getWeatherbyCityName>\r\n"
                      + "  </soap:Body>\r\n"
                      + "</soap:Envelope>";      string request = requestHeader + requestBody;
          _rcv_buff = "";
          _proxy.Send(_remoteHost, _remotePort, request);
          // .....
      

  11.   


    我的警告的意思是就不能正常生成代理类了.
    而且直接用SOAP的话,代理类里面就给封装好了.
    这样不是比自己写起来方便很多吗
      

  12.   


    是啊, 2.0 没有封装 12 的 request 吧, 你又执意要在 2.0 下用 soap12
      

  13.   

    因为我给服务器发送的不只是一个消息/
    我有很多种消息.
    这些消息的区别就是靠我的客户端函数的参数不断变化来控制的/
    也就是我的客户端给投入不同的函数参数,看看服务器端会有什么反映.这样采用SOAP不就很方便了吗
    我直接把客户端的函数和类的形式序列化成
    封装好的SOAP包发送给客户端
    而我们不用管他内部怎么去实现啊///
    我只需要不断改变函熟参数./.而要是你那种方法的话
    那有多好个函数参数就得写多少个SOCKET的消息///
      

  14.   

    NET Framework 3.5 
    应该包含SDK,在开始菜单找找看
      

  15.   

    NET Framework 3.5 已经按装了
    但是开始菜单没找到踏他
    哭//////
      

  16.   

    刚才查了下,SDK好像真的包含在VS2008中的,只能找一个2008了,那东西太大了,
    最好去借一张或者买一张盘文件: VS2008SP1CHSX1512981.iso
    版本: SP1
    语言: 简体中文
    大小: 898.1 MBVisual Studio 2008 SP 1简体中文版下载页面
    http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=27673c47-b3b5-4c67-bd99-84e525b5ce61VS2008 SP1  ISO安装镜像直接下载
    http://download.microsoft.com/download/1/9/d/19d22169-a4b2-455f-8c28-ed137bd91487/VS2008SP1CHSX1512981.iso
      

  17.   

    真是太感激你了./.
    赫赫
    看来这个问题我是解决不了了/
    我们公司只有2005的盘
    而且即使有
    我的电脑内存和硬盘好象都没有那么大
    可以装VS2008别的法子都没了吗?
    只能生成SOAP1.1??
      

  18.   

    在执行 wsdl 之前执行一下看看where wsdl.exe 看看用的哪个版本的 wsdl.exe,我的是:
    C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\wsdl.exe
      

  19.   

    我和你的一模一样
    不知道你那里可以生成SOAP1.2版本的不
    VS2005的应该都是
    C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\wsdl.exe 
      

  20.   

    1 安装 3.5 sp1 包: 
    dotnetfx35.exe 237M2 安装 Windows SDK for Windows Server 2008 and .NET Framework 3.5:
    File Name: 6.0.6001.18000.367-KRMSDK_EN.iso
    Version: 6.1
    Date Published: 2/5/2008
    Language: English
    Download Size: 1330.0 MB就可以开发了, 只不过没有 开发环境
      

  21.   


    什么意思?
    你指的是没有VS2008吗我只要能在命令行生成SOAP1.2的代理类就可以了.........
      

  22.   

    对的, wsdl 是属于.net SDK 中的工具, 运行时中没有, 
    不过安装 vs 也会携带它,日他娘的微软, 搞 3.5 的 SDK 这么大, 3.5 sp1 也是个大头鬼
      

  23.   

    赫赫
    消消气
    我已经装了你说的
    dotnetfx35.exe 和
    Windows SDK for Windows Server 2008 and .NET Framework 3.5
    但是依然不能在命令行生成SOAP1.2的代理类
    还是会出现警告
    说没有正常生成代理类因为我的服务器端只支持SOAP1.2的消息的..
    所以还是成功不了..
      

  24.   

    控制台窗口中输入 where wsdl.exe 显示的是哪个目录下的呢?
      

  25.   


    原来如此:   // 创建客户端 wrapper 类.
      ServerUsage su = new ServerUsage();
                
              // 指定使用 SOAP 1.2 跟 ws 交互, 默认是 1.1 的
             su.SoapVersion = SoapProtocolVersion.Soap12;
      

  26.   

    C:\Program Files\Microsoft Visual Studio 8\VC>where wsdl.exe
    C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\wsdl.exe这是输入的结果.
      

  27.   

    ServerUsage是那个命名空间下的?
    我没用过这个东东...........
      

  28.   

    你的客户端 wrapper 类, 从 SoapHttpClientProtocol  派生的那个