.net 使用externalMetadataLocation设置原始WSDL不会';行不通

.net 使用externalMetadataLocation设置原始WSDL不会';行不通,.net,wcf,wsdl,.net,Wcf,Wsdl,我正在使用C#在web应用程序中构建一个WCF web服务,因为我需要对一些Xml参数进行模式验证,所以我想为我在节点中使用的服务设置一个自定义wsdl 我明白了做这件事的地方是 <serviceMetadata externalMetadataLocation="<wsdlfilename>.wsdl"/> 有时它会给我更复杂的错误,比如 Error: Cannot import wsdl:port Detail: Cannot find definition for

我正在使用C#在web应用程序中构建一个WCF web服务,因为我需要对一些Xml参数进行模式验证,所以我想为我在
节点中使用的服务设置一个自定义wsdl

我明白了做这件事的地方是

<serviceMetadata externalMetadataLocation="<wsdlfilename>.wsdl"/>
有时它会给我更复杂的错误,比如

Error: Cannot import wsdl:port
Detail: Cannot find definition for http://tempuri.org/:BasicHttpBinding_IProcessi.  Service Description with namespace http://tempuri.org/ is missing.Parameter name: name
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://www.archinet.it/HRSuite/Processi/']/wsdl:service[@name='Processi']/wsdl:port[@name='BasicHttpBinding_IProcessi']

Error: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter

Error: Schema with target namespace 'http://www.archinet.it/HRSuite/Processi/' could not be found.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://www.archinet.it/HRSuite/Processi/']/wsdl:portType[@name='IProcessi']
我对xml名称空间还不是很熟练,所以这也可能与它们有关,但我已经尝试过使用和不使用名称空间,所以我不知所措


谢谢

我也遇到了同样的问题,我发现这是因为WCF WSDL通过Import语句包含对外部XSD的引用


通过使用WcfExtras.Codeplex.com实现一个WSDL,然后查看原始WSDL并将其复制到我的静态WSDL文件中,我解决了这个问题。

如果使用外部元数据,您可以从浏览器访问WSDL吗?(您必须设置
httpGetEnabled=“true”
)是的,它会将我重定向到本地文件
Error: Cannot import wsdl:port
Detail: Cannot find definition for http://tempuri.org/:BasicHttpBinding_IProcessi.  Service Description with namespace http://tempuri.org/ is missing.Parameter name: name
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://www.archinet.it/HRSuite/Processi/']/wsdl:service[@name='Processi']/wsdl:port[@name='BasicHttpBinding_IProcessi']

Error: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter

Error: Schema with target namespace 'http://www.archinet.it/HRSuite/Processi/' could not be found.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://www.archinet.it/HRSuite/Processi/']/wsdl:portType[@name='IProcessi']