是否有一种聪明的方法可以在另一台服务器上自动从一台IIS服务器上托管的WCF服务公开WSDL?
由于
答案 0 :(得分:0)
WSDL是从WCF基础结构自动生成的。因此,如果您不在此服务器上部署Web服务,则无法公开WSDL。您当然可以手动复制生成的XML文件,但如果原始Web服务发生更改,则需要在其他服务器上更新它们。
答案 1 :(得分:0)
好吧,如果你想让其他服务器的WSDL准确无误,而你只是传递所有请求,你可能只需要使用新的正确端点更新WSDL的wsdl:service元素(可能通过用外部域替换内部域。)
您可以手动执行此操作,只需在更改后端代码时更新面向公众的WSDL,或者通过使用XmlDocument解析它并在呈现输出之前更新相关节点来即时更新。我不相信会有任何事情让你自动化。
答案 2 :(得分:0)
我不知道你是否找到了答案,但是
WCF服务具有端点,由其web.config定义。 其中一个被称为
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
并且是为IMetadataExchange合约定义的。 现在这个人必须在同一个文件中定义一个行为
<behavior name="OverlayService.Service1Behavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
Service1Behavior是整个WCF服务的行为,它启用httpGet 在ServiceMetadata上运行。
mex是元数据服务地址的默认名称。
把你想要的任何端口放在这里,但有一个建议,去8000-9000及以后。
<Host>
<add baseAddress="http://localhost:8080" />
</Host>
位于web.config中,它是您定义的标记的直接子代, (它之间和之间进一步发展)
WCF服务最好位于虚拟IIS路径中:http://localhost/servicename.svc 顺便说一句,IIS中没有“mex”文件夹,它在程序集和IMetadata中不需要系统定义,它是.net定义的一部分,不需要为它提供文件 这是一个众所周知的名字。