环境环境:Windows Server 2003 SP2 + Visual Studio 2008 SP1
测试目的:对WCF中在以IIS做宿主时,什么样的地址才是客户端配置服务的终结点的正确地址?
测试方法:
测试1:
程序配置:
(1)将宿主程序服务的终结点地址配置为空
(2)客户端终结点地址采用宿主程序文件名且带有.svc后缀(http://127.0.0.1:7000/ServiceTest.svc)
测试结果:
客户端程序成功运行!
测试2:
程序配置:
(1)将宿主程序服务的终结点地址配置为空
(2)客户端终结点地址采用宿主程序文件名但不带有.svc后缀(http://127.0.0.1:7000/ServiceTest)
测试结果:
客户端程序运行失败!报出如下错误:
“没有终结点在侦听可以接受消息的 http://127.0.0.1:7000/ServiceTest。这通常是由于不正确的地址或者 SOAP 操作导致的。”
测试3:
程序配置:
(1)将宿主程序服务的终结点地址配置为“HelloWCF”
(2)客户端终结点地址采用宿主程序文件名但不带有.svc后缀(http://127.0.0.1:7000/HelloWCF)
测试结果:
客户端程序运行失败!报出如下错误:
“没有终结点在侦听可以接受消息的 http://127.0.0.1:7000/HelloWCF。这通常是由于不正确的地址或者 SOAP 操作导致的。”
测试4:
程序配置:
(1)将宿主程序服务的终结点地址配置为“HelloWCF”
(2)将宿主程序服务的终结点配置基地址:http://localhost:7001/
(3)客户端终结点地址为:http://localhost:7001/HelloWCF
测试结果:
(1)浏览器不能通过http://localhost:7001/或http://localhost:7001/HelloWCF查看元数据
(2)客户端程序运行失败!报出如下错误:
“无法连接到 http://localhost:7001/HelloWCF。TCP 错误代码 10061: 由于目标机器积极拒绝,无法连接。 127.0.0.1:7001。”
得出结论:
当用IIS承载宿主程序时,不能在服务的终结点地址赋值,且客户端调用该服务的终结点的地址必须使用这样的路径(宿主程序的地址+服务文件的名称(必须带.svc后缀名))才能正确调用服务中的操作。
终结点地址的Address属性只适用于非IIS托管的场景。