|
Microsoft SOAP Toolkit Version 2.0 FAQ广告 Microsoft SOAP Toolkit Version 2.0 FAQ
版本2.0 SP2,发布于2001年6月21日,可以在: 1.2 我怎样使用Soap trace utility? 在服务器端使用MSSOAPT: 现在对所有在WSDL中指定的地址的请求/回复消息将会显示在Trace工具里。
现在所有在客户端中对指定的地址的请求/回复消息将会显示在Trace工具里。 1.3 为应用SSL,我需要作些什么? 假定你的Server已经配置成需要SSL,你要做的只是修改你的WSDL文件中的URL(如果使用SOAP底层对象,就修改Soap
Connector
URL),把http改为https。在客户端设置UseSSL不是必须的。如果这样不行,最大的可能是Server的证书过期或者Server要求客户端证书。
要注意的是我们常常听到:“它在HTTP的情况下工作得很好,可是在HTTPS却出错。”。如果根目录被配置成要求SSL连接,它在HTTP的情况下将不会工作,因此这句话仅仅意味着你的Server没有被配置成要求SSL连接。 你可以在: 1.4 为什么SMO Generator没有安装? 是否安装SMO
Generator取决于你机器注册表中是否存在"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\6.0\Setup\Microsoft 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交互。 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选项。为此,需要这样调用: 另一个办法是使用本地的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管理工具存在Bug,不能输入包含空格的文件路径。你可能需要输入指向soapisap.dll
的8.3格式的文件路径。 1.15 Soap Toolkit是否支持数组? SOAP Toolkit支持一维简单类型数组、复杂类型数组和多维数组。在下一个Service Pack中将进一步加强对数组类型的支持。 1.19 Soap Toolkit 的fault Detail 元素中包含了什么信息? SOAP中的detail 部分是名称空间限定的,它使用下面的名称空间: 1.20 为什么我会得到"library not registered"错误? "library not registered"错误可能会在试图执行:
Server.CreateObject("MSSOAP.SoapServer")时出现。 2.1 和XSD Namespace的关系? 你可能在SOAP应用中遇到三种版本的XSD名称空间:1999, 2000/10, 和 2001。只要消息中的名称空间和WSDL中的相同,Soap Toolkit 2.0将接受以上三种名称空间中的任何一种。 WSDLGen 已经做过更改以允许你选择生成这三种名称空间的任一种。如果你不需要为与以前的应用兼容的理由而使用1999 或 2000名称空间, 我们强烈建议你使用缺省的2001名称空间。请注意在2001标准中部分数据类型的名称有了改变,检查标准文档以获得详细情况。 2.2 怎样在客户端安装SOAP? 这的确是一个常见问题。而对这个问题的正确回答是使用.MSM 文件,它可以在Toolkit的下载页面上下载得到。当然如果你能很小心地把相应的DLL放到正确的目录下,正确的处理所有的注册项,你可能可以完成你自己的安装;然而把.MSM合并到你的安装程序中是最安全而且也是唯一被支持的方法。 2.3 为什么我的客户端会报告说不能找到服务器组件? 如果你的SOAP方法使用自定义的类型映射对象,在你的客户端可能需要一个WSML文件。WSML文件可以告诉SoapClient你的自定义映射对象的ProgID以便SOAPClient能够找到它。如果你的WSML文件中包含了你的服务器组件的ProgID信息,
(就象你使用服务器上的WSML文件一样)
你可能会希望从中删除服务器组件的信息以使SOAPClient不再试图载入你的服务器组件。 2.4 SOAP Toolkit是否支持COM EXE作为服务器对象? 虽然在某些情况下使用COM EXE可以工作,但这种配置并未经过测试也不被支持。我们建议在这种情况下你使用DLL将COM EXE再次包装来应用。 2.5 为什么WSDLReader不能在Script中使用? WSDLReader 不支持IDispatch接口,因此不能在Script中使用。 2.6 为什么我的字符编码不能在NT4下使用? Windows NT 4.0 不支持CHS:gb2312或AR:iso8859-6编码。 2.7 怎样使用SOAP Toolkit底层接口把我的XML写入消息中? Serializer.writeXML 把XML不经转码写入消息中,文档把它当作CDATA段,但这并不是问题。 2.8 为什么我会得到Access Denied 错误? 请记住一个SOAP Toolkit 应用也是一个Web 应用。Web
服务器会有各种不同的安全措施以确定用户不能访问他无权访问的东西。也就是说, Access Denied
对一个Server应用来说经常是缺省的状态。你可以检查下面几个方面的内容: 上面的列表并不完备,但它应该可以给你一些有用的提示。 2.9 SoapConnector的HResult有何意义? Error AMBIGUOUS BAD_REQUEST ACCESS_DENIED FORBIDDEN NOT_FOUND BAD_METHOD REQ_TIMEOUT CONFLICT GONE TOO_LARGE ADDRESS SERVER_ERROR SRV_NOT_SUPPORTED BAD_GATEWAY NOT_AVAILABLE SRV_TIMEOUT VER_NOT_SUPPORTED BAD_CONTENT CONNECTION_ERROR BAD_CERTIFICATE_NAME HTTP_UNSPECIFIED HTTP_SENDRECV HTTP_BAD_REQUEST HTTP_BAD_RESPONSE HTTP_BAD_URL HTTP_DNS_FAILURE HTTP_CONNECT_FAILED HTTP_SEND_FAILED HTTP_RECV_FAILED HTTP_HOST_NOT_FOUND HTTP_OVERLOADED HTTP_FORCED_ABORT HTTP_NO_RESPONSE HTTP_BAD_CHUNK HTTP_PARSE_RESPONSE HTTP_TIMEOUT HTTP_CANNOT_USE_PROXY HTTP_BAD_CERTIFICATE HTTP_BAD_CERT_AUTHORITY HTTP_SSL_ERROR WSDL_MUSTUNDERSTAND 2.10 当我改变了我的SOAP 服务器的地址时,为什么我的客户端不再工作? 最常见的理由是你需要修改二个不同的URL。SoapClient.mssoapinit 调用包含WSDL的路径(同时可能也包括WSML文件的路径)。当服务的地址改变,因此这些文件的地址也随之变动时,调用的参数也应该随之改变。在WSDL文件中还包括SOAP服务的地址——在Service的location属性中——经常有人会忘记修改这个URL 。 2.11 我怎样在未安装SOAP Toolkit的客户机上实现我自己的SOAP Client? 有一个基于Script的SOAP实现,该实现不需要安装Soap Toolkit。你可以在下列地址下载:
2.12 怎样保护我的SOAP应用? Soap本质上是Web应用,因此应用于Web应用上的安全原则也同样适用于SOAP。在我们这个FAQ中已经包含了最常见的一些关于安全性方面的问题。但在安全性问题过于广泛,不适合在这里讨论。下文是一篇关于SOAP安全性的文章:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/Dnsoap/html/Soapsecurity.asp?frame=true。我所发现的关于Web安全性的最佳资料是Michael Howard的Designing Secure Web-Based
Applications for Microsoft Windows 2000, Microsoft Press; ISBN:
0735609950。 2.13 为什么我的客户端证书没有用? 客户端证书的一个常见问题是在一份证书中包含多个名称——Friendly name 和Subject
Name。在客户端证书中的Subject name被用于Soap 客户端。 要找到subject name,你要用IE的IE/Tools菜单/Internet
Options菜单项/Content,点击certificates 按钮。"Issued To" 栏目中的名字就是Subject
Name。这个名字通常是X.500 名称。如果是这样,在名称中的CN部分就是我们需要的名称。请参见下文以获得更详细的资料: 2.14 我关于Soap Toolkit 2.0的问题在何处可以获得支持? Microsoft支持服务在以下网址: 2.15 Windows 95是否支持Soap Toolkit? Windows 95 不支持SOAP Toolkit中的某些系统调用,因此它不支持SOAP Toolkit。 2.16 为什么我使用底层接口的SOAP应用不能正常工作? 当底层接口对象在跨进程边界(如在IIS中Application Protection为中或高的情况下、COM+Server程序和VB调试器)使用时会出现某些marshalling方面的问题。目前,只能以inproc方式使用底层对象。这个问题将会在以后的service-pack中解决。 2.17 IIS Server返回的HTTP 状态值有何意义? 在此查看: 2.18 应该在何处问关于Web Service方面的问题? soapsdk 的 新闻组不是很好的地方,你可以将问题发送到以下地址: 2.19 下一个版本的Soap Toolkit 何时发布? Soap Toolkit 3.0 将于2001年秋季发布第一个Beta版本。 2.20 为什么我的SOAP客户端每秒发送的SOAP调用不能超过5个? 你可以修改注册表以关闭ISAPI服务器的Nagling延迟。Nagling 会给每个来自ISAPI缓冲的较小的TCP包加入一个时间延迟,这是为了能够有机会把二个较小的包合并为一个以降低网络流量。延时的时间是200 ms, 因此大多数SOAP操作都会有Nagling 引起的额外的200ms的延时。这是某些简单的通过单客户端循环调用Server端方法的基准测试结果比关闭Nagling后的测试结果偏低很多的原因。很明显,即使客户端和服务器端不花费任何时间执行,一个单线程的客户端在1秒内也不能向服务器端发送超过5个调用。在更接近现实情况的基准测试中,使用上千个客户端并行地向服务器发送请求, Nagling通常会因为减少了发送较少的包的次数而提高服务器的性能。通常,当你发现你的测试结果比你想像的要低很多的时候,可以试试关闭Nagling看是否有帮助。要关闭Nagling 延迟,你需要修改注册表项HKEY_LOCAL_MACHINE\Software\Microsoft\MSSOAP\SOAPISAP下的"NoNagling" DWORD 值 为(1)。 2.21 为什么有时SOAP Toolkit不能读取某些WSDL? 检查WSDL文件,看其中是否有import 语句。2.0 版本的toolkit还不支持import。唯一的办法是下载WSDL文件到本地,将import指向的信息copy至WSDL文件。对import的支持将在Toolkit 3.0中加入。 如果您希望与本文章的作者或其所在机构,进一步交流,请联系:畅享网 姜小姐 jill.jiang@amt.com.cn | 021-51096826-112 | 在线联系 |
CIO职场,强者生存?在2008年,我们将继续看到CIO向商业运营方向发展。与此同时,我们也会看到商业管理人员将与技术管理人员一起竞争CIO岗位。 IT领导者的就职机会虽有不少,但其难度将会大幅提高。2…… |
|
|