我需要为客户端公开的服务生成 WCF 代理。该服务被严格锁定,因此事实证明这很困难。另外,我是 WCF 的新手,所以我可能会遗漏一些明显的东西......
客户端仅向我们的生产服务器开放了防火墙 - 因此我无法从我的开发计算机上的 Visual Studio 生成代理。此外,该服务仅通过 HTTPS 公开。它要求我们使用客户端证书进行身份验证......
我希望在生产机器上运行 svcutil 来生成 .cs 文件,然后将文件复制到本地。但 svcutil 拒绝运行,因为客户端正在使用自签名证书。它给了我以下错误:
底层连接已关闭:
无法建立信任关系
用于 SSL/TLS 安全通道。这
远程证书无效
根据验证程序。
我尝试将服务的证书添加为受信任的根证书,但这不起作用。在证书 MMC 管理单元中,我收到“Windows 没有足够的信息来验证证书”。
有没有办法绕过 svcutil 正在执行的安全检查?
当我远程连接到生产服务器时,我可以从 IE 成功浏览到 WSDL。我只需点击“继续访问此网站(不推荐)”即可。我还必须选择已安装的客户端证书,效果很好。然后我可以通过 IE 手动下载 WSDL 和 XSD 文件。因此,另一种替代方法可能是从 WSDL 和 XSD 的本地副本生成 WCF 代理,而不是针对实时服务运行 svcutil。但我不知道如何正确地做到这一点。
我尝试将静态 WSDL 和 XSD 文件放在我们托管的另一个网站上,并更改 属性以指向新网站。但是当我针对这个站点运行 svcutil 时,我收到了一堆关于重复类型声明的错误 - 例如:
错误:存在验证错误
导出期间生成的架构:
来源:
行:1 列:1415 验证错误:complexType
'http://[域名]/Promotions/2009-02-17:InsertReferralPromo_Response http://%5Bdomain-name%5D/Promotions/2009-02-17:InsertReferralPromo_Response' 有
已经被宣布了。
我是否缺少一些明显的方法来做到这一点?或者我们应该要求客户放松他们的安全措施? :)
感谢你给与我的帮助...
Richard
你的问题似乎与安全无关。您下载的 WSDL 和模式似乎有问题。
一种建议是将所有文件放在磁盘上的目录中,而不是放在网站上。如有必要,请删除 schemaLocation 属性。
然而,这似乎没有帮助。您可以尝试使用 XMLSpy 验证这些文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)