有没有办法让我的WSDL中的模式位置相对而不是绝对?我一直在寻找解决方案,我一路上学习更多关于Wsdl的一代,但是我还没有找到我可以配置Wsdl这部分的地方(见突出显示)。
我希望能让这成为一条相对的道路。
我相信可能有一种方法可以在webconfig中强制执行此操作,但我还没有能够在线找到解决方案。如果可能的话,任何帮助都会非常感激。如果不可能,我也会接受这个解决方案。谢谢!
答案 0 :(得分:0)
对不起,迟到了。我被拉到一边以解决其他一些问题。因此,对于我的解决方案,我必须创建自己的WSDL并将其保存在本地。基本上你可以从WebService生成的那个开始,然后将其保存为.WSDL文件。编辑您的需求。如果你需要像我一样的相对路径,我只需添加相对路径并将其保存在webservice应用程序的根目录中。它就是这样的:
using the standard link http://localhost:52038/Service1.svc?wsdl
-<xsd:schema targetNamespace="http://tempuri.org/Imports">
<xsd:import namespace="http://tempuri.org/"schemaLocation="http://localhost:52038/Service1.svc?xsd=xsd0"/>
<xsd:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" schemaLocation="http://localhost:52038/Service1.svc?xsd=xsd1"/>
</xsd:schema>
对于本地WSDL,我将schemaLocations保存并更改为相对路径,如下所示:
-<xsd:schema targetNamespace="http://tempuri.org/Imports">
<xsd:import namespace="http://tempuri.org/" schemaLocation="xsd0.xsd"/>
<xsd:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" schemaLocation="xsd1.xsd"/>
</xsd:schema>
然后我禁用了serviceMetaData&#39; httpGetEnabled = False&#39;在web.config中,因此WebService将不再生成WSDL。如果我现在要向消费者提供这个WSDL,我会给他们自定义本地WSDL的路径http://localhost:52038/Service1.wsdl
我确信在这个问题上还有更多可以说的,但我想分享我在这里所做的事情。免责声明,这只是关于某事物的一般POC的示例项目。谢谢!