Microsoft SOAP Toolkit Version 2.0 FAQ(Part 2)

类别:.NET开发 点击:0 评论:0 推荐:

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不再试图载入你的服务器组件。
(注:这段翻译的有点不知所云,附上原文:
You may need to use a WSML file on the client if your Soap methods use custom type mappers. The WSML file specifies the progid of the custom mapper for the SoapClient to know where to find it. If your WSML file specifies the progid of your server component (as it will if you use the WSML generated for the server) you may want to remove the server component information so the SoapClient doesn't attempt to load your server component.)

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应用来说经常是缺省的状态。你可以检查下面几个方面的内容:
  • 确定你的应用程序运行时的使用的用户帐号(比如IWAM_... 或者 IUSR_... 什么的) 对WSDL和WSML文件有读权限——检查文件的访问控制列表和IIS的配置。
  • 确定Web应用程序的用户帐号对实现你的SOAP服务的dll文件有读和执行的权限。
  • 确定你的SOAP服务的虚拟目录对WSDL扩展名的文件有读和执行权限。
  • 这种情况经常发生在当你在VB调试器中运行你的服务器组件时:匿名用户没有足够的权限在VB调试器中激活相应的对象。

上面的列表并不完备,但它应该可以给你一些有用的提示。

2.9 SoapConnector的HResult有何意义?


Error

Decimal

Hex

AMBIGUOUS

5000

1388

BAD_REQUEST

5050

13BA

ACCESS_DENIED

5051

13BB

FORBIDDEN

5052

13BC

NOT_FOUND

5053

13BD

BAD_METHOD

5054

13BE

REQ_TIMEOUT

5055

13BF

CONFLICT

5056

13C0

GONE

5057

13C1

TOO_LARGE

5058

13C2

ADDRESS

5059

13C3

SERVER_ERROR

5100

13EC

SRV_NOT_SUPPORTED

5101

13ED

BAD_GATEWAY

5102

13EE

NOT_AVAILABLE

5103

13EF

SRV_TIMEOUT

5104

13F0

VER_NOT_SUPPORTED

5105

13F1

BAD_CONTENT

5200

1450

CONNECTION_ERROR

5300

1464

BAD_CERTIFICATE_NAME

5301

1465

HTTP_UNSPECIFIED

5400

1518

HTTP_SENDRECV

5401

1519

HTTP_BAD_REQUEST

5402

151A

HTTP_BAD_RESPONSE

5403

151B

HTTP_BAD_URL

5404

151C

HTTP_DNS_FAILURE

5405

151D

HTTP_CONNECT_FAILED

5406

151E

HTTP_SEND_FAILED

5407

151F

HTTP_RECV_FAILED

5408

1520

HTTP_HOST_NOT_FOUND

5409

1521

HTTP_OVERLOADED

5410

1522

HTTP_FORCED_ABORT

5411

1523

HTTP_NO_RESPONSE

5412

1524

HTTP_BAD_CHUNK

5413

1525

HTTP_PARSE_RESPONSE

5414

1526

HTTP_TIMEOUT

5415

1527

HTTP_CANNOT_USE_PROXY

5416

1528

HTTP_BAD_CERTIFICATE

5417

1529

HTTP_BAD_CERT_AUTHORITY

5418

152A

HTTP_SSL_ERROR

5419

152B

WSDL_MUSTUNDERSTAND

7100

1BBC

2.10 当我改变了我的SOAP 服务器的地址时,为什么我的客户端不再工作?


最常见的理由是你需要修改二个不同的URL。SoapClient.mssoapinit 调用包含WSDL的路径(同时可能也包括WSML文件的路径)。当服务的地址改变,因此这些文件的地址也随之变动时,调用的参数也应该随之改变。在WSDL文件中还包括SOAP服务的地址——在Service的location属性中——经常有人会忘记修改这个URL 。

2.11 我怎样在未安装SOAP Toolkit的客户机上实现我自己的SOAP Client?


有一个基于Script的SOAP实现,该实现不需要安装Soap Toolkit。你可以在下列地址下载: http://msdn.microsoft.com/downloads/samples/internet/behaviors/library/webservice/sample.asp.

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。
ASPToday 也有几篇很好的安全性文章, 其中一篇是: Securing Windows 2000 IIS 5.0applications

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部分就是我们需要的名称。请参见下文以获得更详细的资料:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/Dnsoap/html/Soapsecurity.asp?frame=true

2.14 我关于Soap Toolkit 2.0的问题在何处可以获得支持?


Microsoft支持服务在以下网址:
http://support.microsoft.com/directory/overview.asp?sd=gn&fr=0。你可以选择电话支持或基于Web的支持:http://support.microsoft.com/directory/directory.asp?sd=gn.

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 状态值有何意义?


在此查看:
http://msdn.microsoft.com/workshop/networking/wininet/reference/constants/statuscodes.asp.

2.18 应该在何处问关于Web Service方面的问题?


soapsdk 的 新闻组不是很好的地方,你可以将问题发送到以下地址:
[email protected].

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中加入。

本文地址:http://com.8s8s.com/it/it46299.htm