分享
 
 
 

Microsoft SOAP Toolkit Version 2.0 FAQ

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

Microsoft SOAP Toolkit Version 2.0 FAQTranslate 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选项。为此,需要这样调用:

设置"ServerHTTPRequest" 属性为true。例:

SoapClient.ClientProperty("ServerHTTPRequest") = True

需要运行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" 的步骤(请确定你有本地管理权限。):

在"Default Web Site"的属性页中选择Home Directory页。

在Home Directory 页,点击Configuration 按钮 在出现的"Application Configuation"对话框中选择App Mappings页。

如果.wsdl扩展不存在,点击Add按钮加入.wsdl扩展。

输入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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有