Microsoft SOAP Toolkit Version 2.0 FAQ

Microsoft SOAP Toolkit Version 2.0 FAQ

Translate By Zee

Microsoft Corporation
August 2001
Summary: This article provides in-depth answers to frequently asked development questions regarding Microsoft SOAP Toolkit 2.0. (12 printed pages)

1.1 Soap Toolkit的最新版本是什么?

版本2.0 SP2,发布于2001年6月21日,可以在:
http://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/msdn-files/027/001/580/msdncompositedoc.xml 下载。
1.2 我怎样使用Soap trace utility?
  • 在服务器端使用MSSOAPT:
    • 修改WSDL中soap:address 元素的location属性,将端口改为8080。例如:假设WSDL中包含<http://MyServer/VDir/Service.wsdl>,将它改为: http://MyServer:8080/VDir/Service.wsdl
    • 在服务器端运行MSSOAPT。
    • 如果你不想看到HTTP头信息的话,选择“File-> New-> Formatted Trace ”;如果你想看到HTTP头信息如ContentType 和 SoapAction,选择“File-> New-> Unformatted Trace”。
    • 在Trace Setup对话框中点击OK 以使用缺省值。

现在对所有在WSDL中指定的地址的请求/回复消息将会显示在Trace工具里。
  • 在客户端使用MSSOAPT:
    • 在本地保存一份服务的WSDL文档副本。
    • 修改WSDL中soap:address 元素的location属性,将地址和端口改为localhost:8080 ,并记下原来WSDL的地址和端口号。例如:假设WSDL中包含<http://MyServer/VDir/Service.wsdl>,将它改为: <http://localhost:8080/VDir/Service.wsdl> 并记下"MyServer"。
    • 在客户端运行MSSOAPT。
    • 如果你不想看到HTTP头信息的话,选择“File-> New-> Formatted Trace ”;如果你想看到HTTP头信息如ContentType 和 SoapAction,选择“File-> New-> Unformatted Trace”。
    • 在Trace Setup对话框中,输入在第二步中记下的地址和端口作为destination host 和destination port, 然后点击OK

现在所有在客户端中对指定的地址的请求/回复消息将会显示在Trace工具里。
1.3 为应用SSL,我需要作些什么?

假定你的Server已经配置成需要SSL,你要做的只是修改你的WSDL文件中的URL(如果使用SOAP底层对象,就修改Soap Connector URL),把http改为https。在客户端设置 UseSSL不是必须的。如果这样不行,最大的可能是Server的证书过期或者Server要求客户端证书。 要注意的是我们常常听到:“它在HTTP的情况下工作得很好,可是在HTTPS却出错。”。如果根目录被配置成要求SSL连接,它在HTTP的情况下将不会工作,因此这句话仅仅意味着你的Server没有被配置成要求SSL连接。
一些其他常见问题:
  • 请确认你的证书是有效的而且有可信任的根——双击打开证书文件,检查是否有警告。
  • 确认你的服务器的SSL配置正确——服务器端证书有效而且有可信任的根证书,而且根证书安装在LOCAL_MACHINE存储中。
  • 你不能把localhost作为主机名——URL中的主机名必须与服务器端证书中的机器名相同。
  • 如果你的机器上没有安装MMC工具,要查看你的证书可以使用IE——在IE的Tools菜单,Options菜单项下的Content/Certificates/。
  • 如果你将你的虚拟目录配置为要求客户端证书——你可以使用IE访问该虚拟目录以确定你要使用什么证书来访问该站点。IE将显示IE服务器信任的客户端证书的列表。如果你使用IE5.5,请取消IE安全性设置中的"Miscellaneous/Don't prompt for client certificates selection when no certificates or only one certificate exists"选择。

你可以在:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/Dnsoap/html/Soapsecurity.asp?frame=true.找到更进一步的信息。
1.4 为什么SMO Generator没有安装?

是否安装SMO Generator取决于你机器注册表中是否存在"HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/6.0/Setup/Microsoft
Visual Basic/ProductDir"的键值,你可以检查注册表确认是否存在该键值。
(注:SMO Generator=SOAP Messageing Object Generator ,是一个VB6 AddIn,其实就是说要安装了VB6才会安装SMO Generator。)
1.6 我怎样使Soap Toolkit可以与Apache交互?

在版本2.1以前, Apache 要求所有的SOAP参数都要带有xsi:type属性 。同时, Soap Toolkit 通常不会在SOAP Message中发送xsi:type。在Apache version 2.1中,如果类型已经在配置描述符(注:deployment descriptors,不知何义。)定义过,则可以不需要再指定xsi:type 属性。然而, Apache服务还没有使用WSDL,因此,为了使SOAP Toolkit客户能够与Apache server交互,必须再为他创建一个WSDL文件。Soap Toolkit RTM版经测试可以成功的与Apache 2.2交互。
另一个小窍门是你可以手工修改生成的WSDL文件,把Apache难以处理的类型修改为"xsd:anyType"。这将使Toolkit认为这个参数是variant类型,于是它会包含参数的类型信息,而这正是Apache需要的。
1.9 WSDL是什么?

WSDL是一个标准,是一种结构化的描述SOAP消息和Web服务的方法。Soap Toolkit依据WSDL创建和解释SOAP消息 ,因此,SOAP Toolkit 2.0的客户端和服务端都需要WSDL文档。如果你希望Soap Toolkit 2.0 客户端与一个不支持WSDL的SOAP 服务器交互,你必须自己创建一个WSDL文档描述SOAP 服务器需要的SOAP 消息格式。我发现创建这个WSDL最简单的办法是用VB创建一个哑接口,这个接口定义的方法和SOAP服务器的相同,然后,使用WSDLGen生成这个VB dll的WSDL文件。你当然也可以自己写WSDL文档。如果你希望用一个不支持WSDL的SOAP 客户访问SOAP Toolkit 2.0 服务,你可以把WSDL作为SOAP Message格式的描述,并把它作为Client端创建SOAP Message的依据。
1.10 在哪里可以找到WSDL标准?

W3C已经接受了WSDL 1.1 规范,你可以在 http://www.w3.org/TR/wsdl找到相应的标准。
1.11 当我在ASP里运行我的SOAP客户端时,为什么我不能读到WSDL文档?

WSDL Reader 使用MSXML的http接口将WSDL Load到DOM。在ASP中运行MSXML HTTP stack 需要设置ServerHTTPRequest选项。为此,需要这样调用:
  1. 设置"ServerHTTPRequest" 属性为true。例:
    SoapClient.ClientProperty("ServerHTTPRequest") = True
  2. 需要运行proxycfg.exe (见Knowledge Base article Q289481)。

另一个办法是使用本地的WSDL文件:
mssoapinit ("C:/wsldfiles/MyProject.wsdl")
1.11 WSML是什么?

WSML可以认为是SOAP Toolkit的配置文档。它包含将WSDL中描述的SOAP消息映射到COM接口的信息。比如COM的一些信息如ProgID和DispID。 WSML不会成为标准,因为它仅仅对Soap Toolkit才有意义。
1.12 我为什么要使用SMO而不是SOAP Toolkit的高层对象接口?

虽然这二者的功能有一定的重合,但各有侧重:SOAP Toolkit的高层对象一般最好用于传统的程序间RPC调用。而SMO比较适用于面向消息的应用。如果你希望用SOAP交换XML文档,SMO是最佳的选择。如果你希望用SOAP在远程机器上执行某些操作,高层对象接口可能会是更好一些的选择。SMO提供了一个接口, 可以比高层对象接口更容易地创建复杂的XML 文档。
1.13 什么时候我才需要使用ISAPI listener而不是ASP?

我的回答是几乎所有的时候。ISAPI 比ASP更快而且更容易使用,所以除非你要做一些ISAPI不能做的事或者你使用SMO,建议你使用ISAPI。
1.14 为什么ISAPI不能在我的虚拟目录运行?

当ISAPI安装后,它会把自己注册为".WSDL" 的处理者。Soap Toolkit 2.0会在IIS服务层的"App Mapping" 中创建".WSDL"扩展名和soapisap.dll的关联。如果"App Mappings"在IIS Web Service的下级结点中被改变过(例如在"Web Site"或者"Virtual Directory"层),由于它们的优先级高于Soap Toolkit 2.0的安装设置, IIS服务层的".WSDL"的映射不会在这些结点中被继承。在这种情况下,你可以用MMC管理工具在"App Mappings"中添加相应的映射。
下面举例说明在IIS 5.0的"Default Web Site"中使用MMC管理工具添加"App Mappings" 的步骤(请确定你有本地管理权限。):
  1. 在"Default Web Site"的属性页中选择Home Directory页。
  2. Home Directory 页,点击Configuration 按钮 在出现的"Application Configuation"对话框中选择App Mappings页。
  3. 如果.wsdl扩展不存在,点击Add按钮加入.wsdl扩展。
  4. 输入soapisap.dll的路径.。

注  由于IIS管理工具存在Bug,不能输入包含空格的文件路径。你可能需要输入指向soapisap.dll 的8.3格式的文件路径。
(如: C:/PROGRA~1/COMMON~1/MSSOAP/BINARIES/SOAPISAP.DLL)
在"Extension"文本框中输入.wsdl。如果使用Microsoft&reg; Windows&reg; 2000,在"Verbs"中选择 Limit to 并输入: GET, POST, HEAD。 如果使用 Windows NT &reg; 4 ,则不要填写Exclude 文本框。选中"Script Engine"并不选"Check that files exist"。最后,点击 OK完成新映射的输入。
注   虽然上述步骤用于设置"Default Web Site"的"App Mappings" ,对"Virtual Directory"的设置也是这样的。
1.15 Soap Toolkit是否支持数组?

SOAP Toolkit支持一维简单类型数组、复杂类型数组和多维数组。在下一个Service Pack中将进一步加强对数组类型的支持。
1.19 Soap Toolkit 的fault Detail 元素中包含了什么信息?

SOAP中的detail 部分是名称空间限定的,它使用下面的名称空间:
http://schemas.microsoft.com/soap-toolkit/faultdetail/error/
所有的Soap Toolkit错误信息都具有如下的格式:
<soap:fault....>
<detail>
<mserror:errorInfo
xmlns:mserror="http://schemas.microsoft.com/soap-
         toolkit/faultdetail/error/">
     <mserror:returnCode></mserror:returnCode>
    <mserror:serverErrorInfo>
        <mserror:description></mserror:description>
        <mserror:source></mserror:source>
        <mserror:helpFile></mserror:helpFile>
        <mserror:helpContext></mserror:helpContext>
     </mserror:serverErrorInfo>
   <mserror:callStack>
      <mserror:callElement>
         <mserror:component></mserror:component>
           <mserror:description></mserror:description>
           <mserror:returnCode></mserror:returnCode>
        </mserror:callElement>
     </mserror:callStack>
  </mserror:errorInfo>
  </detail>
因此,假定我们需要产生详细的错误信息,我们要创建扩展的 errorinfo 段:段中的根元素是 mserror:errorInfo 元素,它的第一个子元素是 returnCode,其中包含HRESULT错误编码。
如果服务器上发生的错误同时也包括一个 errorinfo 对象(原文:If the failure was caused by something providing an errorinfo object itself on the server,翻译存疑)(如: servercomponent 已被调用错误(?)), 这时 (也仅在这时,因此下面的步骤不总是需要的。)我们要创建 mserror:serverErrorInfo段。该段中的所有部分都是可选的。——虽然当存在一个帮助文件时你总是可以得到 helpContext 元素——段中的元素仅当服务器存在该信息时才会出现。如果存在这些信息,它们会在客户端的 Error 对象的相应属性中出现。
1.20 为什么我会得到"library not registered"错误?


"library not registered"错误可能会在试图执行: Server.CreateObject("MSSOAP.SoapServer")时出现。
该错误的产生原因是SOAP类型库的注册表项没有赋予"Everyone"组读的权限。产生该错误的最可能的原因是安装过Crystal Reports 8.0。
(见 http://support.microsoft.com/support/kb/articles/Q266/6/21.ASP)


-----------------------------------------
第一次翻译  :)
Part 2 under work
阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Soap Toolkit 3.0 是一个用于在微软平台上开发 Web 服务的工具包。它提供了一套库和工具,帮助开发人员轻松地构建和部署基于 SOAP(简单对象访问协议)的应用程序。 首先,Soap Toolkit 3.0 提供了一套用于生成 SOAP 消息的类库。开发人员可以使用这些类库来创建 SOAP 请求和响应消息,并添加必要的头部和主体信息。这使得开发人员可以直接与目标 Web 服务进行通信,从而实现应用程序之间的数据传输和交互。 此外,Soap Toolkit 3.0 还提供了一组工具,用于生成和解析 SOAP 消息。开发人员可以使用这些工具来快速验证和调试他们的 SOAP 消息。例如,开发人员可以使用 XMLSpy 或其他 XML 编辑器来验证他们的 SOAP 消息是否符合特定的 XML 格式。同时,他们还可以使用 SOAP 测试工具来模拟和发送 SOAP 请求,以确保他们的应用程序能够正确地处理这些请求。 此外,Soap Toolkit 3.0 还支持安全性和身份验证。开发人员可以使用该工具包提供的安全性功能,如 SSL (Secure Sockets Layer),来保护他们的 SOAP 通信。此外,Soap Toolkit 3.0 还支持基于用户名和密码的身份验证,以确保只有授权用户能够访问和使用他们的 Web 服务。 总之,Soap Toolkit 3.0 是一个强大而灵活的工具包,为开发人员提供了构建和部署基于 SOAP 的 Web 服务的便利。它的类库和工具可以帮助开发人员更轻松地创建、解析和调试 SOAP 消息,并提供安全性和身份验证功能,以确保通信的安全性和合法性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值