当我将Web服务访问到Web浏览器时,我会遇到一种奇怪的行为,并且在生成时会导致异常。
以下是我的情景:
问题是WCFService2.svc WSDL的输出包含与WCFService2合并的WCFService1的所有定义。
此外,当我访问另一个包含与先前生成的WSDL具有相同名称的方法的WSDL时,我得到了这个异常(当然因为我的WSDL被合并在一起)。
我还注意到合同的名称在服务名称之前有“:”有点奇怪:http://MyCompany.ca/:IWCFService3
有人知道“WSDL导出扩展”会发生什么?
ExceptionDetail,可能由。创建 IncludeExceptionDetailInFaults = TRUE, 其价值是:
System.InvalidOperationException:在对a的调用中抛出异常 WSDL导出扩展:
System.ServiceModel.Description.DataContractSerializerOperationBehavior 合同:http://MyCompany.ca/:IWCFService3
----> System.InvalidOperationException:The MyCompany.IWCFService3.Import operation引用了一个消息元素 [http://MyCompany.ca/:Import]有 已经从中出口了 MyCompany.IWCFService2.Import 操作。您可以更改名称 其中一项操作是通过改变 方法名称或使用Name属性 of OperationContractAttribute。 或者,你可以控制 使用更详细的元素名称 MessageContract编程模型。 在System.ServiceModel.Description.MessageContractExporter.AddElementToSchema(XmlSchemaElement) element,String elementNs, XmlSchemaSet schemaSet) 在System.ServiceModel.Description.MessageContractExporter.ExportWrappedPart(消息 message,String elementName,String elementNs,XmlSchemaSet schemaSet, Boolean skipSchemaExport) 在System.ServiceModel.Description.DataContractSerializerMessageContractExporter.ExportBody(Int32) messageIndex,Object state) 在System.ServiceModel.Description.MessageContractExporter.ExportMessage(Int32 messageIndex,Object state) 在System.ServiceModel.Description.MessageContractExporter.ExportMessageContract() 在System.ServiceModel.Description.DataContractSerializerOperationBehavior.System.ServiceModel.Description.IWsdlExportExtension.ExportContract(WsdlExporter) 出口国, WsdlContractConversionContext contractContext) 在System.ServiceModel.Description.WsdlExporter.CallExtension(WsdlContractConversionContext) contractContext,IWsdlExportExtension 扩展)
答案 0 :(得分:2)
我发现了我的问题:我们有大量的Web服务,我们有一个System.ServiceModel.Description.ServiceMetadataBehavior实例,我们在所有服务中共享。为每个服务创建ServiceMetadataBehavior的新实例解决了这个问题。